结构体中字节对齐的问题
在一个16位的机器,以下结构由于边界对齐浪费了多少空间()
1
2
3
4
5
|
struct {
char
a;
int
b;
char
c;
}
2
4 6 8
16位机器,char型占1个字节,int型占2个字节。
结构体中字节对齐有两条规则:
根据上面两条规则,画出内存示意图。根据规则1,int b从2处开始放,此时结构体总长度为(1 + 1 + 2 + 1 = 5);再根据规则2,
结构体总长度应为2的整数倍,故应为6.描红的两个字节表示被浪费的。
|