Tenho experiência em C #. Sou muito um novato em uma linguagem de baixo nível como C.
Em C #, struct
a memória de é definida pelo compilador por padrão. O compilador pode reordenar os campos de dados ou preencher bits adicionais entre os campos implicitamente. Então, eu tive que especificar algum atributo especial para substituir esse comportamento para o layout exato.
AFAIK, C não reordena ou alinha o layout de memória de um struct
por padrão. No entanto, ouvi dizer que há uma pequena exceção que é muito difícil de encontrar.
Qual é o comportamento do layout de memória do C? O que deve ser reordenado / alinhado e não?
#pragma pack
mas com um controle mais refinado sobre a semântica.