У мене фон C #. Я дуже новачок у мові низького рівня, як C.
У C # struct
пам'ять розміщена компілятором за замовчуванням. Компілятор може переупорядковувати поля даних або неявно розміщувати додаткові біти між полями. Отже, мені довелося вказати якийсь спеціальний атрибут, щоб замінити цю поведінку для точного розміщення.
AFAIK, C не впорядковує та не вирівнює макет пам'яті struct
за замовчуванням. Однак я чув, що є невеликий виняток, який дуже важко знайти.
Яка поведінка макета пам'яті C? Що слід переупорядковувати / вирівнювати, а ні?
#pragma pack
і з більш точним контролем над семантикою.