[Visual С++] Принудительное выравнивание памяти переменных/структур данных
Я смотрю на использование SSE, и я собираю данные о выравнивании по границам 16 байт. Существует два случая:
float data[4];
struct myystruct
{
float x,y,z,w;
};
Я не уверен, что первый случай может быть выполнен явно, хотя, возможно, есть опция компилятора, которую я мог бы использовать? Во втором случае я помню, как несколько лет назад можно было контролировать упаковку в старых версиях GCC, возможно ли это?
Ответы
Ответ 1
Для статического массива вы можете использовать
__declspec(align(16)) float data[4];
Для динамически распределенного массива используйте _aligned_malloc и _aligned_free. Для управления выравниванием структурных элементов используйте пакет #pragma.