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