关于字节对齐问题
现在已知32位机器上各种数据类型的长度如下:
char:1(有符号无符号同)
short:2(有符号无符号同)
int:4(有符号无符号同)
设结构体如下定义:
struct A
{
int a;
char b;
short c;
};
struct B
{
char b;
int a;
short c;
};
结果是:
sizeof(strcut A)值为8
sizeof(struct B)的值却是12
这个是没有问题的
下面的
#pragma pack (2) /*指定按2字节对齐*/
struct C
{
char b;
int a;
short c;
};
结果是:
sizeof(struct C)值是8。
修改对齐值为1:
#pragma pack (1) /*指定按1字节对齐*/
struct D
{
char b;
int a;
short c;
};
#pragma pack () /*取消指定对齐,恢复缺省对齐*/
sizeof(struct D)值为7。
可以看出当指定对齐的字节越小 占用的内存空间就会越小,也就是说只要每次指定按1字节对齐占用的空间总是最少的,不知道是不是这样的