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

时间:2010-08-25 10:22:26

标签: c++ arrays stl tr1 memory-alignment

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

1 个答案:

答案 0 :(得分: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 );