私はショートが1だと思いましたか?なぜ 16 から 24 に 8 増加したのですか?
1 に答える
4
これは、データ型のアラインメントの問題です。
なぜオフセットが 0、4、8、16、24 なのか説明してもらえますか?
最初の項目は常に構造体の先頭 (オフセット 0) になります。
はchar
1 バイトを占めるため、次のオフセットは 1 になります。ただし、double*
は (パフォーマンスのために) 4 バイトにアラインされているため、次の 4 バイトのオフセット 4 に移動します。x86 (32 ビット) では、ポインターは4 バイトなので、次のオフセットは 8i
です。
double のバイト サイズが 8 で int が 4 であることはわかっていますが、short は 1 だと思いましたか? なぜ 16 から 24 に 8 増加したのですか?
于 2012-11-13T05:14:55.293 に答える