0

ここに画像の説明を入力

私はショートが1だと思いましたか?なぜ 16 から 24 に 8 増加したのですか?

4

1 に答える 1

4

これは、データ型のアラインメントの問題です。

なぜオフセットが 0、4、8、16、24 なのか説明してもらえますか?

最初の項目は常に構造体の先頭 (オフセット 0) になります。

char1 バイトを占めるため、次のオフセットは 1 になります。ただし、double*は (パフォーマンスのために) 4 バイトにアラインされているため、次の 4 バイトのオフセット 4 に移動します。x86 (32 ビット) では、ポインターは4 バイトなので、次のオフセットは 8iです。

double のバイト サイズが 8 で int が 4 であることはわかっていますが、short は 1 だと思いましたか? なぜ 16 から 24 に 8 増加したのですか?

于 2012-11-13T05:14:55.293 に答える