way*_*orc 0 c memory-alignment
我对《计算机系统:程序员的视角》 (第 3 版(2015 年 10 月 6 日))一书的问题 3.44 有关数据对齐的问题有疑问。
问题:
对于以下每个结构声明,确定每个字段的偏移量,即结构的总大小,以进行 8 位对齐:
struct P1 {short i; int c; int *j; short *d}
...
struct P4 {char w[16]; char *c[2]}
struct P5 {struct P4 a[2]; struct P1 t}
Run Code Online (Sandbox Code Playgroud)
书中给出的答案:
| 我 | C | j | d | 全部的 |
|---|---|---|---|---|
| 0 | 2 | 6 | 14 | 16 |
| w | C | 全部的 |
|---|---|---|
| 0 | 16 | 32 |
| A | t | 全部的 |
|---|---|---|
| 0 | 24 | 40 |
我不明白的是为什么 did struct P4 a[2]inP5只需要 24 个字节?
既然P5.a是一个大小为2的数组P4,那它不应该占用2 * 32 (total size of P4)字节吗?
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |