Compartilhar via


__unaligned

Quando você declara um ponteiro com o __unaligned modificador, o compilador pressupõe que se o ponteiro elimina dados que não estão alinhados.Conseqüentemente, para um aplicativo que se destina a um computador da família de processadores Itanium (IPF), o compilador gera código que lê o byte de dados não alinhadas um por vez.

Comentários

O __unaligned modificador é válido para o x64 e Itanium compiladores mas afeta apenas aplicativos destinados a um computador da IPF.Esse modificador descreve o alinhamento dos dados endereçados apenas; o ponteiro propriamente dito é assumido como estar alinhados.

O Itanium processador gera uma falha de alinhamento quando ele acessa dados desalinhados, e o tempo para processar a falha enfraquece a desempenho. Use o __unaligned modificador para fazer com que o processador ler o byte de dados, um por vez e evitar a falha.Esse modificador não é necessário para x64 aplicativos porque a x64 processador manipula dados desalinhados sem falha.

Para obter mais informações sobre o 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++