内存对齐规则
//0偏移处 就是假设结构体在某地址开始,那么从第一个位置,也就是0位置就是相对偏移为0
如下图所示
计算结构体总大小时候,所有成员的对齐数中最大对齐数的整数倍,第一个成员int也算
图上灰色的6,7,13,14,15都是浪费掉的空间,建议将浪费掉的空间改成红色
如果结构体中有数组,数组要对齐到数组中元素的类型大小和默认对齐数的较小值
如上图 char[5]就是 1/8 对齐数就是1,那么4就是1的整数倍,然后根据元素大小,和数组中有几个,就放几个。
结构体嵌套结构体
修改默认对齐数
#pragma pack(8)//设置默认对齐数为8
#pragma pack()//取消设置的默认对齐数,还原为默认