Partilhar via


__unaligned

Quando você declara um ponteiro com o modificador __unaligned, o compilador presume que o ponteiro aborda os dados que não são alinhados. Por isso, para um aplicativo cujo alvo é um computador da família de processadores Itanium (IPF), o compilador gera o código que lê os dados não alinhados um byte de cada vez.

Comentários

O modificador __unaligned é válido para os compiladores x64 e Itanium, mas só afeta os aplicativos cujo alvo é um computador IPF. Esse modificador descreve o alinhamento dos dados endereçados apenas; o ponteiro em si é considerado alinhado.

O processador Itanium gera uma falha de alinhamento quando acessa dados desalinhados, e o tempo de processamento da falha enfraquece o desempenho. Use o modificador __unaligned para fazer com que o processador leia os dados de um byte de cada vez e evite a falha. Esse modificador não é necessário para aplicativos do x64 porque o processador x64 trata dados desalinhados sem falhas.

Para obter mais informações sobre alinhamento, consulte:

Exemplo

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

Consulte também

Referência

Palavras-chave C++