Ho uno sfondo C #. Sono un principiante di un linguaggio di basso livello come C.
In C #, structla memoria di è impostata dal compilatore per impostazione predefinita. Il compilatore può riordinare i campi dati o riempire implicitamente bit aggiuntivi tra i campi. Quindi, ho dovuto specificare alcuni attributi speciali per sovrascrivere questo comportamento per il layout esatto.
AFAIK, C non riordina o allinea il layout di memoria di a structper impostazione predefinita. Tuttavia, ho sentito che c'è una piccola eccezione che è molto difficile da trovare.
Qual è il comportamento del layout di memoria di C? Cosa dovrebbe essere riordinato / allineato e non?
#pragma packma con un controllo più dettagliato sulla semantica.