
私はショートが1だと思いましたか?なぜ 16 から 24 に 8 増加したのですか?
これは、データ型のアラインメントの問題です。
なぜオフセットが 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 増加したのですか?