字节对齐
vc环境:
结构的首地址必须是结构内最宽类型的整数倍地址; 另外,结构体的每一个成员起始地址必须是自身类型大小的整数倍 ( 需要特别注意的是windows下是这样的,但在linux的gcc编译器下最高为4字节对齐)
struct A { int a; char b; short c; }; vc: 8B gcc: 8B
struct B { char b; int a; short c; }; vc: 12B gcc: 12B
struct C { double t; char b;
int a; short c; }; vc: 24B gcc: 20B
struct D { char b; double t; int a; short c; }; vc: 24B gcc: 20B
gcc、vc设置紧缩结构
#pragma pack(push, 1)
typedef struct St2Tag
{
St1 st1;
char ch2;
} St2;
#pragma pack(pop)