__unaligned
При объявлении указателя с __unaligned модификатор, компилятор предполагает, что указатель адреса данные, не выровнены.Следовательно, для приложения, предназначен для компьютер Itanium processor family (IPF), компилятор создает Код, который считывает один байт бесподстроечные данные одновременно.
Заметки
__unaligned модификатор допустимым для x64 и Itanium компиляторы, но затрагивают только приложения, этот целевой объект компьютер IPF.Этот модификатор описывает выравнивание данных обращаннсяых только; предполагается, что выравниваются сам указатель.
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");
}
}