C语言结构体 变量对齐原理
以32位Linux为例,默认对齐值是4.
对齐原则通常有以下几种:
- 第一个成员在与结构体变量偏移量为0的地址处。
- 其他成员变量要对齐到某个数字(对齐参数)的整数倍的地址上。
- 结构体总大小为最大对齐参数的整数倍。
- 嵌套结构体要对齐到自身最大对齐参数的整数倍。
- 结构体数组中的每个元素都是相互独立的。
以该结构体为例进行讲解:
struct S1 {char c1; // 1个字节int i; // 4个字节char c2; // 1个字节
};结果:sizeof(S1) = 12;