求指点-字对齐问题
struct A{
short a;
char b;
char c;
}a;
sizeof结果是 4,这个好理解。
struct B{
char d;
short e;
char f;
}b;
sizeof结果却是6。求指点啊~拜谢!
[解决办法]
如果B的尺寸是5,那么B[2]就没法保证两个B::e都对齐
一般来说,要保证结构体数组能够正确的对齐,结构体尺寸应该是里面元素要求的对齐的最小公倍数
[解决办法]
struct B{
char d;
short e;
char f;
}b;
char d;占1byte,但是下一个变量时short e;short类型是2byte,因此要从2byte的整数倍数开始存储,也就是第三个字节开始占两个,char d;short e;就占4个字节了,char f;存到第五个字节,整个结构的内存大小必须是结构体内部占空间最大的变量所占空间的倍数,也就是2byte的整数倍,比5byte大的又是2byte的倍数的就是6byte了
因此sizeof(B)=6
[解决办法]
字节对齐,看了都说好
http://blog.csdn.net/kuzuozhou/article/details/7278555