C 分配器的STD :: Align_val_t的有效对齐值是多少

What are the valid alignment values for std::align_val_t for C++ allocators?

本文关键字:对齐 多少 有效 分配器 Align val STD      更新时间:2023-10-16

现在C 有几个带有STD :: Align_Val_t参数的新的新删除操作员,对它们的有效值是什么?

他们是1、2、4、8,...等等?

值上限?

由编译器定义?

std::align_val_t及其约束在语言支持标题<new>的概要中指定。因此,如果一个人读取[new.delete],则说明以下内容:

除非另有说明,否则 [basic.stc.dynamic]适用于运营商的库版本的库版本和 操作员删除。如果对准参数的值传递给任何 这些函数中不是有效的对齐值,行为是 未定义。

因此,您必须传递一个有效的值,其中在[basic.Align]/4:

中给出了有效对齐的定义。

对齐表示为std :: size_t类型的值。有效的 对齐仅包括由对准表达式返回的值 对于基本类型以及其他实施定义的 一组值,可能是空的。每个对齐价值应为 两个。

的非阴性积分能力

是的,只有两个的权力加上您的实施明确允许的任何价值。不用担心上面提到的std::size_tstd::align_val_t只是std::size_t作为基础类型的枚举类:

enum class align_val_t : size_t {};

这也意味着您询问的上限本质上是std::numeric_limits<std::size_t>::max()。但是当然,您的实施可能会执行较低的实施。