如:
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个字节
字节对齐问题
为了字节对齐,ch[10]占用10个字节,它后面的6个字节占用但不使用,int i和*p都是4个字节,double是8个字节。你说错了,应该是32吧
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632