C ++のすべての型は整列しています。これは、そのタイプのオブジェクトを作成できるメモリアドレスの制限です。そのアドレスをオブジェクトの整列で割ると整数である場合、メモリアドレスはオブジェクトの作成に有効です。
型の整列は常に2の累乗です(1を含む)。
標準では、次のことが保証されています。
void
へのポインターは、 char
へのポインターと同じ位置合わせ要件を持ちます。 アライメントはC ++ 03に存在するが、C ++ 11まではアラインメント( alignof
を使用)とアライメントの制御( alignas
を使用)が可能になるまでではなかったことに注意してください。