構造体のサイズを確認してみたことはありますか? 構造体をファイルに保存したことはありますか? やけにサイズが大きかったり、ゴミが保存されたりはしませんでしたか? 今回は、そういうことがなぜ起こるのかについてのお話です。 では、今回の要点です。 構造体のメンバはぎっちり詰まっていないことがある。 #pragma pack でアラインメントを変更できる。 メンバ変数の構造体の先頭からの位置は offsetof マクロで取得できる。 では、いってみましょう。 次のような構造体を考えてみましょう。 strcut SPerson { char szName[21]; // 名前 int nAge; // 年齢 char nBirthmonth; // 誕生月 char fSex; // 性別 }; さて、問題です。この構造体のサイズはいくらになるでしょうか? 先ず、szName のサイズは21バイト