Udostępnij za pośrednictwem


__unaligned

Po zadeklarowaniu wskaźnika z modyfikatorem __unaligned, kompilator zakłada, że wskaźnik adresuje dane, które nie są wyrównane.W związku z tym dla aplikacji, która jest przeznaczona dla komputera z rodziny procesorów Itanium (IPF), kompilator wygeneruje kod, który odczytuje niewyrównane dane, jeden bajt za każdym razem.

Uwagi

Modyfikator __unaligned jest prawidłowy dla kompilatorów x64 i Itanium, ale wpływa tylko na aplikacje, które są przeznaczone na komputer IPF.Ten modyfikator opisuje tylko wyrównanie adresowanych danych; zakłada się, że wskaźnik sam w sobie jest wyrównany.

Procesor Itanium generuje błąd wyrównania, gdy uzyska dostęp do nieprawidłowo wyrównanych danych, a czas przetwarzania błędu osłabia wydajności.Należy użyć modyfikatora __unaligned, aby procesor odczytywał dane po jednym bajcie na raz i w celu uniknięcia błędu.Ten modyfikator nie jest wymagany dla aplikacji x64, ponieważ procesor x64 obsługuje nieprawidłowo wyrównane dane bez generowania błędu.

Aby uzyskać więcej informacji dotyczących wyrównania, 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");
   }
}

Zobacz też

Informacje

Słowa kluczowe języka C++