分配缓冲区,new char[sizeof(T)]
保证分配与 type 正确对齐的内存T
,其中所有成员T
都有其自然的、实现定义的对齐方式(也就是说,您没有使用alignas
关键字来修改它们的对齐方式)。
我在这里的一些答案中看到了这个保证,但我并不完全清楚标准是如何达到这个保证的。标准的5.3.4-10给出了基本要求:本质上new char[]
必须对齐max_align_t
。
我缺少的是那个说alignof(T)
总是与最大值的有效对齐的位max_align_t
。我的意思是,这似乎很明显,但是结构的最终对齐方式是否最多max_align_t
?甚至第 3.11-3 点说可能支持扩展对齐,所以编译器可以自己决定一个类是过度对齐的类型吗?