实例如下
#include <stdio.h> int main(int argc, char *argv[]) { struct _THUNDER{ int iVersion; char cTag; char cAdv; char cEnd; int iUser; }Thunder; int sz = sizeof(Thunder); printf("%d\n",sz); }结果为:12
交换cEnd 和iUser的位置后
#include <stdio.h> int main(int argc, char *argv[]) { struct _THUNDER{ int iVersion; char cTag; char cAdv; int iUser; char cEnd; }Thunder; int sz = sizeof(Thunder); printf("%d\n",sz); }结果为:16
比较两者可以得到,第一个中的三个char类型的数据合并为一个int的类型,第二个中是将前两个char类型合并为一个int,最后的char又为一个int,这样就4个int了。
本文通过两个C语言示例展示了结构体内存对齐的原理。当char类型与int类型混合时,不同成员变量的排列顺序会影响最终的内存占用大小。通过对比,可以观察到编译器如何进行内存对齐优化。
1478

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



