如:
struct dog
{ char ch[10];
int i;
int *p;
double k;
} dog1;
为啥dog1占用内存的字节数为22?int啥时候等于占用2?
如:
struct dog
{ char ch[10];
int i;
int *p;
double k;
} dog1;
为啥dog1占用内存的字节数为22?int啥时候等于占用2?
32位系统中:
char ch[10]; //正常情况下占10个字节
int i; //正常情况下占4个字节
int *p; //正常情况下占4个字节
double k;//占8个字节
但是在结构体中,存在字节对齐问题,double类型占用8个字节,int和int*一起也占用8个字节,所以内存总量应该是8的倍数,char数组补齐,大小是10以上且是8的倍数,最小的数是16。所以总共占32个字节