字节对齐

字节对齐的细节和编译器实现相关,一般满足三个准则:

  • 1.结构体变量的首地址能够被其最宽的基本类型成员的大小所整除
  • 2.结构体每个成员相对于结构体首地址的偏移量是成员大小的整数倍,如有需要编译器会在成员之间填充占位字节(internal padding)使之满足本条要求
  • 3.结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后添加占位字节(trailing padding),使之满足本条要求
【字节对齐】数据类型自身的对齐值,一般情况下,char类型1字节,short类型2字节,int,float类型4字节,double类型8字节
另外,可以通过预处理指令#prama pack(N)指示编译器按照N字节对齐

    推荐阅读