Ho uno sfondo C #. Sono un principiante di un linguaggio di basso livello come C.
In C #, struct
la 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 struct
per 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 pack
ma con un controllo più dettagliato sulla semantica.