一.计算struct的size有两个原则:
#pragma pack(n)
n是编译器的对齐字节数
(1)struct中各成员按照对齐原则:在为当前变量(设为a)分配内存时,要参考之前所有变量的偏移量之和(设为d),d必须是min(n,sizeof(a))的倍数,否则编译器会自动在最后补上缺少的字节数。(2)待所有变量都分配完毕之后,还要比较当前所占内存(设为c)与struct中长度最大的变量的长度(设为b),c必须是b的倍数,否则编译器也会在最后补上缺少的字节数。
二.union
union的长度取决于其中的长度最大的那个成员变量的长度。即union中成员变量是重叠摆放的,其开始地址相同。aaa
c++内存对齐
最新推荐文章于 2024-09-16 16:51:01 发布