关于字节对齐
有如下代码:
#pragma pack(4)
struct test
{
char a[4];
short b;
}
int main(int argc, char *argv[])
{
struct test hi;
printf( "sizeof(struct test):%d\n ", sizeof(struct test));
}
#pragma pack()
为什么输出是6呢?4字节对齐应该大小是4的倍数吧?
希望解答,谢谢
[解决办法]
short 占两个字节
char 站1个
char aa[4] 占四个 刚好是2的倍书
所 2+ 4 ==6
[解决办法]
是根据单位字节最大的来对齐的
你的结构体中,最大的是short类型,因此是按照2字节对齐
[解决办法]
你的结构体内最大的是short类型的,它占用2个字节的内存,所以结构体的大小是2的倍数才对,所以结果是6。
[解决办法]
来有一点要记住
当#pragma pack(n)中的N大于你结构中占字节最多的那个类型时,无意义,用最大类型字节代替
就像楼主的代码 最大字节数是2(SHORT) 但你却#pragma pack(4) 结果还是按2来对器
所以结果是6