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