内存对齐
1. 内存对齐原则
结构体的有效对齐值的确定:
- 当未明确指定时,以结构体中最长成员的长度为其有效值;
- 当用#pragma pack(n)指定时,以n和结构体中最长成员的长度中较小者为其值。
2. 案例
1. 未指定对齐值
struct A { char c; short s; int i; }; struct B { double d; char c1; int i; short s; char c2; };
结果:sizeof(A) = 8; sizeof(B) = 24;
2. 指定对齐值
#pragma pack(2) struct A { char c; short s; int i; }; struct B { double d; char c1; int i; short s; char c2; };
结果:sizeof(A) = 8; sizeof(B) = 18;