Sdílet prostřednictvím


__unaligned

Při deklaraci ukazatele s modifikátorem __unaligned kompilátor předpokládá, že ukazatel odkazuje na data, která nejsou zarovnána.V důsledku toho pro aplikace, která cílí na počítač rodiny procesorů Itanium (IPF), kompilátor generuje kód, který čte nezarovnaná data po jednom bajtu.

Poznámky

Modifikátor __unaligned je platný pro kompilátory x64 a Itanium, ale ovlivňuje pouze aplikace, které cílí na počítač IPF.Tento modifikátor popisuje pouze zarovnání odkazovaných dat. Ukazatel sám je považován za zarovnaný.

Procesor Itanium generuje při přístupu k nesprávně zarovnaným datům chybu a čas potřebný ke zpracování chyby snižuje výkon.Modifikátorem __unaligned lze zajistit, že procesor bude číst data po jednom bajtu a k dané chybě nedojde.V aplikacích architektury x64 není tento modifikátor vyžadován, protože procesor architektury x64 zpracovává nesprávně zarovnaná data bezchybně.

Další informace o zarovnání naleznete v následujících tématech:

Příklad

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

Viz také

Referenční dokumentace

Klíčová slova jazyka C++