Для чего используются ключевые слова alignas и alignof? - PullRequest
8 голосов
/ 14 августа 2011

Мне трудно понять, какова цель ключевых слов alignas и alignof, и я не совсем уверен, что полностью понимаю, что такое выравнивание.

Насколько я понимаю,адрес памяти выравнивается по n байтов, если он делится на n, то есть его можно получить, посчитав n байтов за раз (от 0 до некоторого значения по умолчанию?).Кроме того, ключевое слово alignas при добавлении префикса к объявлению переменной определяет способ выравнивания адреса, по которому хранится переменная, а alignof возвращает способ выравнивания адреса переменной.

Однако,Я не уверен, что это правильное понимание выравнивания или ключевых слов alignof / alignas - пожалуйста, исправьте меня в любом из пунктов, которые я ошибся.Я также не понимаю, для чего используются эти ключевые слова, поэтому буду признателен, если кто-нибудь укажет, в чем заключается их цель.

1 Ответ

8 голосов
/ 14 августа 2011

Некоторые специальные типы должны быть выровнены на большее количество байтов, чем обычно - например, матрицы должны быть выровнены на 16 байтов на x86 для наиболее эффективного копирования в графический процессор. Векторные типы SSE тоже могут вести себя таким образом. Таким образом, если вы хотите создать контейнерный тип, вы должны знать требования к выравниванию типа, который вы пытаетесь ограничить или выделить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...