C/C++中字节对齐总结
1、首先不同硬件平台默认的“对齐系数”不同,对齐系数——存储数据时,几位为一个单位,例如32位机器是4位,64位机器是8位。
2、其次这个“对齐系数”在编译器中是可以用编程语言或者编译器相关设置更改的,例如(1)、#pragma pack(4) (2)、#pragma pack()。第一行是设置对齐系数是4,第二行取消对齐系数的设置,还原为系统默认。
3、最后,记住几个准则,(1)结构体存储空间的总大小是内部最大数据类型的整数倍。(2)各个结构体内的成员的首地址相对于结构体首地址的偏移量是其类型大小的整数倍,(3)为了满足规则1和2编译器会在结构体成员之后进行字节填充。