Системы требуют, чтобы определенные примитивы были выровнены с определенными точками в памяти (ints к байтам, которые кратно 4, shorts to bytes, кратным 2 и т.д.). Разумеется, они могут быть оптимизированы для удаления наименьшего места в заполнении.
Мой вопрос: почему GCC не делает это автоматически? Является ли более очевидная эвристика (переменные порядка от самого большого требования к размеру до наименьшего), в чем-то не хватает? Является ли какой-то код зависимым от физического упорядочения его структур (это хорошая идея)?
Я только спрашиваю, потому что GCC супер оптимизирован во многих отношениях, но не в этом, и я думаю, что должно быть какое-то относительно прохладное объяснение (к которому я не обращаю внимания).