C++ std::aligned_存储如何为任何对象公开正确对齐的存储?
C++ std::aligned_存储如何为任何对象公开正确对齐的存储?,c++,c++11,memory-management,alignment,C++,C++11,Memory Management,Alignment,std::aligned_storage结构提供了一个typetypedef,它至少符合以下条件: 提供成员typedef type,它是适合使用的PODType 作为大小最大为Len和的任何对象的未初始化存储 其对齐要求是Align的除数 Align的默认值是最严格的(最大的) 最大尺寸为Len的任何对象的对齐要求 特别是,使用默认值Align,可以对大小最多为Len的任何对象进行适当对齐 请注意,对于过度对齐的类型没有任何警告或例外(在任何情况下,我使用的平台gcc至少支持一些过度对齐的类型
std::aligned_storage
结构提供了一个type
typedef,它至少符合以下条件:
提供成员typedef type,它是适合使用的PODType
作为大小最大为Len和的任何对象的未初始化存储
其对齐要求是Align的除数
Align的默认值是最严格的(最大的)
最大尺寸为Len的任何对象的对齐要求
特别是,使用默认值Align
,可以对大小最多为Len的任何对象进行适当对齐
请注意,对于过度对齐的类型没有任何警告或例外(在任何情况下,我使用的平台gcc至少支持一些过度对齐的类型)
这样的实现实际上如何工作?为了满足“任何对象”的要求,它可能会:
alignof(T)Per
是否支持任何扩展对齐由实现定义
当他们在没有指针的大表之后指定这样的内容时,这是非常恼人的。我刚刚把这句话添加到参考资料中。所以脚注“2”不会出现在文本的任何地方,对吗?但奇怪的是,GCC通常支持至少128个扩展对齐,但这里不支持。但是,我想扩展对齐支持在任何实现中都是一致的,这是没有限制的。