当前位置:首页 > 内存 > 正文

内存对齐原理

  • 内存
  • 2024-05-06 18:18:37
  • 6870

一、内存对齐规则

接下来我们就从这个规则的简单结构来分析理解一下。

按照规则填充得到结构体struct1所需的内存18。但是,内存分配必须是最大成员8的整数倍,即必须是24。
图1所示的执行结果与根据规则计算的结果相同。

根据上述规则,输出内存中存储的数据将如图2所示的结果。

接下来读取内存区域中的数据,检查是否是图3中保存的数据。

我们将使用上述已知信息。使用结构体struct1作为研究对象。为了验证上述规则,定义另一个结构体struct2作为struct1的成员。

按照约定,struct2的最大内部成员是1字节的整数倍。将数据添加到存储中。struct1所需的内存不需要更改。
结果图2.1

从结果图中可以看出,struct2的成员是在struct1的成员d之后填充并存储的。

结果图2.2

struct1所需内存为28。8字节的最大整数倍必须是32。

结构体struct2被填充到29并终止,但该结构体必须满足内存对齐原则。因此,short从32开始填充,因为它的扩展(30,31)总共占用12个字节,这是最大成员的整数倍。内存为40字节。

您可以看到结构构件的顺序已调整,以利用中间备件。这节省了结构所需的内存。