__unaligned

При объявлении указателя с модификатором __unaligned компилятор предполагает, что указатель обращается к данным без выравнивания. Поэтому для тех приложений, которые предназначены для компьютеров с процессором семейства Itanium, компилятор создает код, считывающий такие данные по одному байту за раз.

Заметки

Модификатор __unaligned допустим для компиляторов x64 и Itanium, но действует только для приложений, предназначенных для компьютеров с процессором семейства Itanium. Этот модификатор описывает только выравнивание данных, к которым выполняется обращение. Сам по себе указатель считается выровненным.

При обращении к данным с неверным выравниванием процессор семейства Itanium создает ошибку выравнивания, а время, необходимое для ее обработки, снижает производительность. Используйте модификатор __unaligned, чтобы указать процессору считывать по одному байту за раз и предотвратить ошибку. Этот модификатор не требуется для приложений x64, поскольку процессор x64 без ошибок обрабатывает данные с неверным выравниванием.

Дополнительные сведения о выравнивании см. в разделах:

Пример

// unaligned_keyword.cpp
// compile with: /c
// processor: x64 IPF
#include <stdio.h>
int main() {
   char buf[100];

   int __unaligned *p1 = (int*)(&buf[37]);
   int *p2 = (int *)p1;

   *p1 = 0;   // ok

   __try {
      *p2 = 0;  // throws an exception
   }
   __except(1) {
      puts("exception");
   }
}

См. также

Ссылки

Ключевые слова в C++