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