字节对齐的细节和编译器实现相关,但一般而言,满足四个准则:
1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
2)每个成员分别按自己的方式对齐,并能最小化长度。其对齐的规则是,每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数(这里是8字节)中较小的一个对齐。
3) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);
4) 结构体的总大小为结构体所用过的所有对齐参数(内部最大元素大小)的整数倍,不够就补充空字节。