C · Avançado · Português · Técnico
alinhamento de memória
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