Conflitos com o compilador x86

Tipos de dados maiores que 4 bytes não estão alinhados automaticamente na pilha quando você usa o compilador x86 para compilar um aplicativo. Como a arquitetura para o compilador x86 é uma pilha alinhado de 4 bytes, nada maior do que 4 bytes, por exemplo, um inteiro de 64 bits, não pode ser alinhada automaticamente para um endereço de 8 bytes.

Trabalhando com dados desalinhados tem implicações de dois.

  • Pode levar mais tempo para acessar locais não alinhadas que leva para acessar locais alinhados.

  • Desalinhada locais não podem ser usados em operações interligadas.

Se você precisar de mais alinhamento estrito, use __declspec(align(N)) on your variable declarations. Isso faz com que o compilador alinhar dinamicamente a pilha para atender às suas especificações. No entanto, ajustar dinamicamente a pilha em tempo de execução pode causar a execução mais lenta do seu aplicativo.

Consulte também

Referência

Tipos e armazenamento

align (C++)