Freigeben über


__unaligned

Wenn Sie einen Zeiger mit dem __unaligned-Modifizierer deklarieren, geht der Compiler davon aus, dass der Zeiger auf Daten verweist, die nicht ausgerichtet sind. Aus diesem Grund erstellt der Compiler für eine Anwendung, die auf einen Computer der Itanium-Prozessorfamilie (IPF) ausgerichtet ist, Code, der die nicht ausgerichteten Daten ein Byte nach dem anderen liest.

Hinweise

Der __unaligned-Modifizierer ist für die x64- und Itanium-Compiler gültig, wirkt sich jedoch nur auf Anwendungen aus, die auf einen IPF-Computer ausgerichtet sind. Dieser Modifizierer beschreibt nur die Ausrichtung der adressierten Daten. Für den Zeiger selbst wird angenommen, dass er bereits ausgerichtet ist.

Der Prozessor Itanium generiert einen Ausrichtungsfehler, wenn er auf falsch ausgerichtete Daten zugreift, und die Zeit, um den Fehler zu verarbeiten, mindert die Leistung. Verwenden Sie den __unaligned-Modifizierer, um den Prozessor zu veranlassen, die Daten ein Byte nach dem anderen zu lesen und so den Fehler zu vermeiden. Dieser Modifizierer ist für x64-Anwendungen nicht erforderlich, da der x64-Prozessor falsch ausgerichtete Daten ohne Fehler verarbeiten kann.

Weitere Informationen zur Ausrichtung finden Sie unter:

Beispiel

// 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");
   }
}

Siehe auch

Referenz

C++-Schlüsselwörter