我目前的代码是:
a = new int[10];
且a
的地址为0x...040
我希望它4096
字节对齐,所以我尝试将其更改为:
a = new __declspec(align(4096)) int[10];
但仍然不起作用(地址仍以040
而不是000
结尾。我做错了什么?
答案 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