关于结构体中成员对齐的总结:
a.结构体中,结构体成员要对齐到其对齐值倍数的地址上,对齐值为MIN(成员类型对齐值,编译器结构成员对齐值<N字节对齐>)。
b.结构体本身的对齐值为其所有成员中最大的对齐值。
c.结构体本身要对齐到其对齐值倍数的地址上。
d.结构体中的结构体要对齐到其对齐值倍数的地址上。
e.结构体成员在内存中的排序和其定义顺序是相同。
在win32环境下:
typedef struct st1
{
char a1;
char a2;
} ST1;
typedef struct st2
{
char a1;
int a2;
} ST2;
typedef struct st3
{
char a1;
int a2;
char a3;
} ST3;
printf("%d/n",sizeof(ST1)); //2
printf("%d/n",sizeof(ST2)); //8
printf("%d/n",sizeof(ST3)); //12