Share via


__unaligned

Cuando se declara un puntero con el modificador __unaligned, el compilador supone que el puntero hace referencia a datos no alineados. Por consiguiente, para una aplicación destinada a un equipo IPF, de la familia de procesadores Itanium, el compilador genera código que lee los datos sin alinear byte a byte.

Comentarios

El modificador __unaligned es válido para los compiladores x64 e Itanium, pero solo afecta a las aplicaciones destinadas a equipos IPF. Este modificador describe la alineación de los datos objetivo solo; se supone que el puntero en sí está alineado.

El procesador Itanium genera un error de alineación cuando tiene acceso a datos mal alineados, y el tiempo necesario para procesar el error afecta negativamente al rendimiento. Use el modificador __unaligned para hacer que el procesador lea los datos byte a byte y evitar el error. Este modificador no es necesario para las aplicaciones x64, porque el procesador x64 administra los datos mal alineados sin generar errores.

Para obtener más información sobre la alineación, vea:

Ejemplo

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

Vea también

Referencia

Palabras clave de C++