是否在平台字边界上使用new []分配的字节数组?

时间:2015-11-01 07:47:43

标签: 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字节边界上分配一些对齐的东西。这是真的吗?

0 个答案:

没有答案