Mam tło C #. Jestem bardzo nowicjuszem w języku niskiego poziomu, takim jak C.
W języku C # structpamięć 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 structdomyś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 packale z bardziej szczegółową kontrolą nad semantyką.