ExpertiDict

C · Avançado · Português · Técnico

alinhamento de memória

/a.li.ɲaˈmẽ.tu dʒi meˈmɔ.ɾjɐ/substantivo

Restrição de que certos tipos fiquem em endereços múltiplos de um valor, em geral o próprio tamanho. Acessos desalinhados podem ser lentos ou travar o programa em algumas arquiteturas.

Onde usar

É o motivo do padding em structs e de funções como aligned_alloc. As palavras-chave _Alignof e _Alignas, do C11, consultam e exigem alinhamento.

Em código

_Alignas(16) char buf[64];
printf("%zu\n", _Alignof(double));

Exemplos

O crash vinha de um acesso fora do alinhamento de memória em ARM.

Exigi alinhamento de 16 bytes no buffer por causa do SIMD.

Cuidado

Fazer cast de um char * qualquer para int *: isso pode criar um ponteiro desalinhado, o que é comportamento indefinido.

Sinônimos

alignment

Veja também

Todos os termos de C