Немного предыстории, чтобы помочь вам разобраться в таких проблемах.
Поскольку операции примитивной памяти обычно задаются с кратными 8, инженеры компилятора выбирают схемы заполнения для структур данных в памяти.
Если операция извлечения памяти (memory -> bus -> cpu) будет 16-битной (на гипотетическом компьютере), и вы добавите 3 * 8-битные типы в вашу структуру, конструктор компилятораможет также дополнить его до 32-битной структуры, поскольку в 2,16-битной памяти будут выполняться операции извлечения, чтобы вытащить вашу структуру в кэш-память CPU для операций с процессором.компилятор не должен делать это в исключительных обстоятельствах, таких как разработка протокола на диске или сетевого протокола, когда вы, возможно, захотите быть космически сознательным.
В реальном мире такие проблемы более сложны, но решения принимаютсяИз того, что лучший выбор для общего использования вашего оборудования: D