システムでは、特定のプリミティブをメモリ内の特定のポイントに揃えることが要求されます (int から 4 の倍数のバイト、short から 2 の倍数のバイトなど)。もちろん、これらを最適化して、パディングで無駄なスペースを最小限に抑えることができます。
私の質問は、GCC がこれを自動的に行わないのはなぜですか? より明白なヒューリスティック (最大サイズ要件から最小サイズへの順序変数) が何らかの形で欠けていますか? 一部のコードは、その構造体の物理的な順序に依存していますか (それは良い考えですか)?
GCCは多くの点で非常に最適化されていますが、これはそうではありません.