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中文网其他相关文章!