题目一
题目二
在 16 位机器上,通常以 2 字节为边界对齐。
- 首先看
char a
,它占用 1 个字节。 - 接着是
int b
,占用 2 个字节。由于要满足边界对齐,在 char a
后面会填充 1 个字节,使得 int b
从 2 字节边界开始存储。 - 最后是
char c
,占用 1 个字节。
整个结构体总共占用的空间为:1(char a
)+1(填充字节)+2(int b
)+1(char c
)+1(填充字节)=6 个字节。
如果不考虑边界对齐,应该占用 1 + 2 + 1 = 4 个字节。
所以由于边界对齐浪费了 2 个字节的空间。
题目三???
题目四???
题目五???