作者: QING
今天上课,老师给我们演示了一下,计算结构体在内存中所占的字节大小。开始给了我们几个例子,然后要我们自己摸索出规律。
注:以下测试全是在win7_64bit Devcpp 5.5.3环境下测试的。(char 1字节,int 4字节, double 8字节)。
也许:你可能认为下面这个答案是 1+4 = 5 (×)
#include <stdio.h>
struct node
{
char a;
int b;
};
int main()
{
struct node QING;
printf("%d\n",sizeof(QING));
return 0;
}
其实,这个题目的答案是: 8 ( √)
这牵涉到一个 结构体字节对齐问题 ,具体结构体为什么要字节对齐,又是如何对齐的,可以参考下面的两篇文章(我网上搜的):
1.海阔凭鱼跃,天高任鸟飞的博客专栏,结构体在内存中所占空间大小的计算,

本文通过四个例子探讨结构体在内存中所占字节大小的计算,涉及内存字节对齐的重要性和原因。结构体的字节大小并非各成员字节之和,而是根据对齐规则进行调整,例如char与int对齐、char*与int对齐等,不同的排列顺序会影响最终大小。内存对齐有助于提高数据存取速度和平台兼容性。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



