C 结构中的内存对齐
在计算中,内存对齐是指对数据可以存储在内存中的地址进行的限制。了解内存对齐对于优化代码性能和避免意外行为至关重要。
问题陈述:
您正在使用通常需要内存对齐的 32 位系统设置为 4 字节。考虑以下结构:
<code class="c">typedef struct { unsigned short v1; unsigned short v2; unsigned short v3; } myStruct;</code>
该结构包含三个 2 字节字段,但使用 sizeof 运算符返回 6 个字节,而不是预期的 8 个字节。相反,以下结构体:
<code class="c">typedef struct { unsigned short v1; unsigned short v2; unsigned short v3; int i; } myStruct;</code>
返回 12 字节的大小,正如字段数量增加和填充潜力所预期的那样。为什么结果大小存在差异?
解释:
在大多数机器上,数据类型对齐到不大于其大小的边界。在这种情况下,short 是 2 个字节,int 是 4 个字节。
第一个结构:
第二个结构体:
以上是为什么具有 3 个短整数的 C 结构的大小为 6 个字节,而添加一个整数的类似结构的大小为 12 个字节?的详细内容。更多信息请关注PHP中文网其他相关文章!