C/C++:構造体のサイズ計算にはsizeofを使う
構造体のメンバーごとのsizeofの値を合計しても構造体のサイズにならない。(重要)
なぜそうなるかというと、メンバーごとにCPUに都合のいい区切りになるように自動的に配置するから。これをアライメント(alignment, 整列)と呼ぶ。この時埋め草に使われる領域をパッド(pad)、埋め草で埋めることをパディング(padding)と呼ぶ。
コンパイル先のCPUによりアライメントの仕様が異なる。
C/C++の仕様にはアライメントを指定する仕様は存在しない。(あったとしてもコンパイラの独自仕様)
構造体に対して sizeof で求めたサイズは整数倍して配列のサイズを求めることができる。これは保証されている。
これができないと、malloc ができない。