在标准C/C++中数据所占用的内存大小:
对于复合类型(一般指数据结构和类),它的起始地址要与“要求最严格”的那个数据对齐,“要求最严格”就是所占空间最大的那个数据类型,一般标准32位机中double和long占据8个字节,int和float占据4个字节,short占据2个字节,bool和char占据1个字节;
需要注意:
1)enum类型的对象占据4个字节,enum中的没个成员都是一个整型;
2)指针占据4个字节,类中如果有虚函数,则会有一个指向虚函数表的指针需要存储;
3)空的结构体或是类占据1个字节,用来标记自己;
4)零数组不占据空间大小,但它会指向它所在结构体的最高位。
int *(*a[5])[6];
sizeof(a)=20;//a所指的空间大小
sizeof(*a)=4;//指针a的大小
sizeof(**a)=24;//a所指的指针所指的空间大小
sizeof(***a)=4;//a所指的指针大小
sizeof(****a)=4;//a所指的指针所指的指针所指的对象大小