您可以分配一个 std::vector,它通过定义您自己的分配器来分配对齐的堆内存。 您可以使用 declspec align 在堆栈上分配一个 c 风格的数组。 但是你能声明一个 tr1::array 来保证索引为零的元素对齐吗?
最佳答案
tr1::array
(以及std::array
和boost::array
)都是POD,所以内容占用的内存与数组
的内存重合。因此,根据需要分配 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 );
关于c++ - 如何让 tr1::array 分配对齐内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3564842/