内存对齐规则:
“对齐系数”:
#pragma pack(n)
“对齐单位”,也叫有效对齐值
min(#pragma pack(n), 最大长度的类型)
结构体的总大小为 有效对齐值 的整数倍,如有需要编译器会在最末一个成员之后加上填充字节。
class C
{
public:
short a;
long long c;
};
// 有效对齐值:8
class C
{
public:
short a;
int b;
}; // 有效对齐值:4
class C
{
public:
char a;
char b;
char c;
char d;
char e;
}; // 有效对齐值:1
class C
{
public:
char a;
char b;
char c;
short e;
}; // 有效对齐值:2