#pragma pack(n) //按n字节对齐,但实际上是:取结构体中单个成员的最大占用字节数和n两者的最小值。
例如:
#pragma pack(8)
struct aa
{
int a;
int v;
char c;
short w;
}; 对齐数取得是 min(sizeof(int),8) 即为 4。
即求sizeof(aa)为12 ,并不是16。 ---》a(占4字节)+v(占4字节)+c(占1字节)+w(占2字节)==>12字节( c和d共占3字节,要补一个字节)
再如这道:
#pragma pack(8)
struct Two
{
char c;
double d;
int i;
} ; 对齐数取得是 min(sizeof(double),8) 即为8。
即求sizeof(Two)为24。 --》c(占1字节)+d(占8字节)+i(占4字节)===>24字节(c补7字节,i补4字节)