__unaligned
Kiedy zadeklarować wskaźnika z __unaligned , modyfikator kompilator zakłada, że wskaźnik adresów danych, który nie jest odpowiednio wyrównany.W związku z tym dla aplikacji, która jest przeznaczony dla komputera rodziny procesor Itanium (IPF), kompilator generuje kod, który odczytuje bajt danych odwołań do niewyrównanych jednej naraz.
Uwagi
__unaligned Modyfikator jest prawidłowy dla x64 i Itanium kompilatory, ale dotyczy tylko aplikacje, które IPF komputer docelowy.Modyfikator opisuje wyrównanie danych adresowanych tylko; przyjęto, że wskaźnik sam być wyrównany.
Itanium Podczas uzyskuje dostęp do źle wyrównanych danych i czasu przetwarzania usterki osłabia wydajności procesora generuje błąd wyrównania. Użyj __unaligned modyfikator spowodować procesora do odczytywania danych jednego bajtu w czasie i uniknąć usterki.Modyfikator nie jest wymagane dla x64 aplikacji ponieważ x64 procesora obsługuje niespójnych danych bez spowodował błąd.
Aby uzyskać więcej informacji na temat wyrównywania zobacz:
Przykład
// 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");
}
}