对齐规则:
1,对于普通变量,内存地址必须为MIN(对齐系数,类型长度)的整数倍
2,对于结构体变量,对齐规则与最长成员变量的对齐规则一致,且对齐后长度必须为成员中对打对齐参数的整数倍
另外,对齐系数在不同平台,不同编译器上不尽相同。可以通过宏#pragma pack(n){n=1,2,4,8}来指定对齐系数。
示例:
#pragma pack(1)//1字节对齐
struct{
char a;
int b;
short c;
double d;
}A;
#pragma pack()
#pragma pack(2)//2字节对齐
struct{
char a;
int b;
short c;
double d;
}B;
#pragma pack()
#pragma pack(4)//4字节对齐
struct{
char a;
int b;
short c;
double d;
}C;
#pragma pack()
#pragma pack(8)//8字节对齐
struct{
char a;
int b;
short c;
double d;
}D;
#pragma pack()