c++ - 如何让 tr1::array 分配对齐内存?

标签 c++ arrays stl tr1 memory-alignment

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

最佳答案

tr1::array(以及std::arrayboost::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/

相关文章:

javascript - 存在 javascript 循环引用问题

c++ - 模拟条件 back_inserter 之类的最佳方法?

C++ 数组与 vector

c++ - GLSL ES顶点着色器错误

javascript - 如何将数组转换为对象,其名称是数组中的第一个值,属性是子数组的数组?

c++ - 将容器中的每个元素划分为给定数字 C++

c++ - For_each 和指向成员函数的指针

c++ - 检查 C++ 程序中的非数字输入

C++ 相同命名空间问题

jQuery:识别声明变量的值与数组中键列表中的值相同