首页 >后端开发 >C++ >`std::array` 与内置数组具有相同的大小和内存布局吗?

`std::array` 与内置数组具有相同的大小和内存布局吗?

Linda Hamilton
Linda Hamilton原创
2024-12-09 21:35:16449浏览

Does `std::array` Have the Same Size and Memory Layout as a Built-in Array?

std::array 的大小和内存布局与数组相同吗?

尽管标准定义 std::array 具有连续性存储和性能与常规阵列相当,但它的确切大小和内存留下了一些模糊的空间

标准要求

标准第 23.3.2.1/2 节规定,数组是一个聚合体,它使用包含最多 N 个可转换为的元素的初始值设定项列表进行初始化T. 这表明 std::array 必须存储值本身,不包括任何辅助data.

潜在的变化

但是,该标准没有明确保证 std::array 将具有与内置数组相同的大小和内存布局。理论上,编译器可以在指定数据之后存储额外的辅助数据,或者应用不同的填充或对齐规则。

超级对齐注意事项

内置数组不支持超级-对齐要求,例如英特尔 SSE 指令的数据。虽然 std::array 的规范可能允许超级对齐,但没有明确保证。

特定于实现的影响

结论:该标准的要求并未明确强加std::array 必须具有与内置数组相同的大小和内存布局。虽然文档表明它应该具有同样的内存效率,但它仍然是特定于实现的。因此,不能依赖相同 sizeof 和内存布局的假设。

以上是`std::array` 与内置数组具有相同的大小和内存布局吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn