如何在c ++中创建一个对齐的整数数组?

时间:2013-10-01 14:45:15

标签: c++ memory-alignment

我目前的代码是:

a = new int[10];

a的地址为0x...040我希望它4096字节对齐,所以我尝试将其更改为:

a = new __declspec(align(4096)) int[10];

但仍然不起作用(地址仍以040而不是000结尾。我做错了什么?

1 个答案:

答案 0 :(得分:7)

__declspec(align(...))可用于静态数组,例如:

__declspec(align(4096)) int a[10];

对于动态分配使用_aligned_malloc函数,使用_aligned_free释放由_aligned_malloc分配的数组:

int* a = (int*) _aligned_malloc(10 * sizeof(int), 4096);
...
_aligned_free(a);

必需的包括malloc.h