如何使tr1 :: array分配对齐的内存?

zr.*_*zr. 4 c++ arrays stl tr1 memory-alignment

您可以分配一个std :: vector,它通过定义您自己的分配器来分配对齐的堆内存.您可以使用declspec align在堆栈上分配c样式数组.但是你可以声明一个tr1 :: array来保证索引为零的元素会对齐吗?

Pot*_*ter 7

tr1::array(和std::arrayboost::array)是POD,所以由内容所占据的存储器是与的存储器一致array.因此,分配array您需要的,并使用展示位置构建它new.

typedef std::tr1::array< MyClass, ary_sz > AryT;
void *array_storage = aligned_allocation( sizeof( AryT ) );
AryT *ary = new( array_storage ) AryT( initial_value );
Run Code Online (Sandbox Code Playgroud)