您可以分配一个std :: vector,它通过定义您自己的分配器来分配对齐的堆内存。 您可以使用declspec align在堆栈上分配c样式数组。 但是你可以声明一个tr1 :: array来保证索引为零的元素会对齐吗?
答案 0 :(得分:7)
tr1::array
(以及std::array
和boost::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 );