Mam tło C #. Jestem bardzo nowicjuszem w języku niskiego poziomu, takim jak C.
W języku C # struct
pamięć jest domyślnie układana przez kompilator. Kompilator może niejawnie zmienić kolejność pól danych lub wstawić dodatkowe bity między polami. Musiałem więc określić specjalny atrybut, aby zastąpić to zachowanie dla dokładnego układu.
AFAIK, C nie zmienia kolejności ani nie wyrównuje układu pamięci struct
domyślnie. Słyszałem jednak, że jest mały wyjątek, który jest bardzo trudny do znalezienia.
Jakie jest zachowanie układu pamięci w C? Co powinno zostać ponownie uporządkowane / wyrównane, a czego nie?
#pragma pack
ale z bardziej szczegółową kontrolą nad semantyką.