标签: c++ performance memory-management new-operator memory-alignment
在64位平台上考虑以下代码:
uint8_t* ptr = new uint8_t[16]; ptr[0] = 1; *reinterpret_cast<double*>(ptr+8) = 1.0;
如果最初分配的字节数组未在8字节边界上对齐,则double值的赋值将要求处理器写入2个64位存储器单元。这会发生吗?标准是否保证用new []分配的字节数组的任何对齐? 我想new double[2]必须在8字节边界上分配一些对齐的东西。这是真的吗?
double
new double[2]