2013-10-01 4 views
2

Мой текущий код:Как создать выровненный массив целых чисел в C++?

a = new int[10]; 

и адрес a является 0x...040 Я хочу, чтобы это было 4096 байт выровнены таким образом, я попытался изменить его на:

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

, но до сих пор это не (адрес по-прежнему заканчивается 040 вместо 000. Что я делаю неправильно?

ответ

7

__declspec(align(...)) может использоваться для статических а rrays, как:

__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

+0

ошибка "_aligned_malloc" идентификатор не определен? да, я включил заголовок – Ajay

Смежные вопросы