C言語における、アラインメント。
最も詳しく解説されていると思われるページ
→データ型のアラインメントとは何か,なぜ必要なのか?
・データのアドレスがNの倍数となるよう、Nバイト境界にアラインすることをアラインメントといい、一般にはNは2の冪乗である。
・sizeof演算子は、バイト数ではなく、配列要素にした場合の配置間隔を返すので、アラインメントの倍数に切り上げられ、バイト数とアラインメントが一致しない場合がある。
・つまり、バイト数が2の冪乗であるデータ型でも、バイト数とアラインメントが一致することは、あくまで可能性が高いだけとなる。
関係する実装の参考になるページ
→C/C++ 関数・マクロ集 5.2 型のアラインメントを返す
→C/C++ 関数・マクロ集 5.3 アラインメント調整のため,オフセットを切り上げる
→境界調整(アラインメント)を調べる::実装技術
最も詳しく解説されていると思われるページ
→データ型のアラインメントとは何か,なぜ必要なのか?
・データのアドレスがNの倍数となるよう、Nバイト境界にアラインすることをアラインメントといい、一般にはNは2の冪乗である。
・sizeof演算子は、バイト数ではなく、配列要素にした場合の配置間隔を返すので、アラインメントの倍数に切り上げられ、バイト数とアラインメントが一致しない場合がある。
・つまり、バイト数が2の冪乗であるデータ型でも、バイト数とアラインメントが一致することは、あくまで可能性が高いだけとなる。
関係する実装の参考になるページ
→C/C++ 関数・マクロ集 5.2 型のアラインメントを返す
→C/C++ 関数・マクロ集 5.3 アラインメント調整のため,オフセットを切り上げる
→境界調整(アラインメント)を調べる::実装技術