Share via


__unaligned

Lorsque vous déclarez un pointeur avec le modificateur __unaligned, le compilateur suppose que le pointeur adresse des données non alignées. Par conséquent, pour une application qui cible un ordinateur de la famille de processeurs Itanium (IPF), le compilateur génère un code qui lit les données non alignées octet par octet.

Notes

Le modificateur __unaligned est valide pour les compilateurs x64 et Itanium, mais affecte uniquement les applications qui ciblent un ordinateur IPF. Ce modificateur décrit l'alignement des données adressées uniquement ; le pointeur lui-même est considéré comme aligné.

Le processeur Itanium génère une erreur d'alignement lorsqu'il accède aux données mal alignées et le temps de traitement de l'erreur réduit les performances. Utilisez le modificateur __unaligned pour imposer au processeur de lire les données octet par octet, afin d'éviter l'erreur. Ce modificateur n'est pas nécessaire pour les applications x64 car le processeur x64 traite les données mal alignées sans erreur.

Pour plus d'informations sur l'alignement, consultez :

Exemple

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

Voir aussi

Référence

Mots clés C++