構造体で sizeof 演算子を使用すると、データを格納するために実際に構造体で使用されるバイト数とは異なるバイト数が常に与えられるのはなぜですか?
2 に答える
1
いつもそうしているわけではありません。コンパイラによる構造体のパッキングに依存します。ページングは、アーキテクチャの配置規則に依存します。
于 2013-09-02T17:55:50.427 に答える
1
この投稿から
これは、構造のアラインメントによるものです。構造体のアラインメントとは、パフォーマンスを向上させるためにデータ メンバーが最適にアラインされるように、未使用のメモリを構造体に挿入するコンパイラの機能を指します。多くのプロセッサは、基本的なデータ型がそのサイズの倍数であるバイト アドレスに格納されている場合に最高のパフォーマンスを発揮します。
最大のデータ型を構造体の先頭に配置し、最小のデータ型を構造体の最後に配置することで、構造体のサイズを最小限に抑えることができます。
于 2013-09-02T17:57:25.663 に答える