Condividi tramite


__unaligned

Quando si dichiara un puntatore con il modificatore __unaligned, il compilatore presuppone che il puntatore faccia riferimento a dati non allineati. Di conseguenza, per un'applicazione da eseguire in un computer della famiglia di processori Itanium, il compilatore genera codice che legge i dati non allineati un byte alla volta.

Note

Il modificatore __unaligned è valido per i compilatori Itanium e x64, ma influisce solo su applicazioni da eseguire in un computer con processori Itanium. Questo modificatore descrive l'allineamento solo dei dati indirizzati poiché si presuppone che il puntatore sia allineato.

Il Itanium genera un errore di allineamento durante l'accesso ai dati disallineati e il tempo di elaborazione dell'errore rallenta le prestazioni. Utilizzare il modificatore __unaligned per indicare al processore di leggere i dati byte alla volta ed evitare l'errore. Tale modificatore non è necessario per le applicazioni x64 perché il processore x64 gestisce i dati disallineati senza errori.

Per ulteriori informazioni sull'allineamento, vedere:

Esempio

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

Vedere anche

Riferimenti

Parole chiave C++