6

リファレンス マニュアルから明らかなように、s のメモリ レイアウトstructは指定されていません(repr属性が使用されていない場合)。この規則により、コンパイラは、フィールドを並べ替えて構造をより密にパックすることができます。

タプルとタプル構造体のメモリ レイアウトはどうですか? それはどのように(未)指定されており、その理由は何ですか?

4

1 に答える 1

3

タプルとタプル構造体のメモリ レイアウトは、通常の構造体のレイアウトと同様に未定義ですが、1 つの例外があります。

これに対する例外は、単位タプル ( ()) です。これは、サイズが 0 でアラインメントが 1 であることが保証されている、サイズがゼロの型として保証されています。

コンパイラは、構造体でできるのと同じ最適化をタプルとタプル構造体で行うことができます。それらの一致も並べ替える必要があります。

于 2014-09-10T22:11:33.620 に答える