У меня опыт работы на C #. Я новичок в языке низкого уровня, таком как C.
В C # struct
память по умолчанию распределяется компилятором. Компилятор может неявно изменять порядок полей данных или вставлять дополнительные биты между полями. Итак, мне пришлось указать какой-то специальный атрибут, чтобы переопределить это поведение для точного макета.
AFAIK, C struct
по умолчанию не меняет порядок и не выравнивает структуру памяти . Однако я слышал, что есть небольшое исключение, которое очень трудно найти.
Каково поведение разметки памяти C? Что нужно переупорядочивать / выравнивать, а что нет?
#pragma pack
но с более детальным контролем над семантикой.