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