#pragma pack(4)可以用来定义编译器自身的对齐位数,32位系统默认的一般也是4。
如果struct中有成员变量大于自身4的如double,则double内存不变,其他的以默认4对齐,如果struct中没有成员变量大于4的,则以成员中最大的内存对齐。
如:
#pragma pack (4)
struct data {
char t1;
char t2;
char t4;
}x1;
int main() {
cout << sizeof(x1);
}
输出:3
#pragma pack (4)
struct data {
char t1;
char t2;
double t5;
char t4;
}x1;
int main() {
cout << sizeof(x1);
}
输出:16