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