アラインメント要件とワードサイズに混乱しています。私は 64 ビット プロセッサで作業しているので、ワード サイズは 8 です。つまり、割り当てられるアドレスは 8 の倍数でなければなりません。
しかしalignof、予想外の結果が得られます。
struct A
{
int a;
char b;
}
出力:
sizeof(A): 8
alignof(A): 4 // why?
比較において、
sizeof(double): 8
alignof(double): 8
4 の倍数で 8 の倍数でないアドレスを に指定すると、Aアクセスが 1 つ増えるためパフォーマンスが低下しますが、それでよろしいですか?
alignof()この特定の例の 8 バイトでのアラインメントは、単純なメモリ パフォーマンスのトレードオフで優れているのに対し、従う必要がある最小の要件を提供するためでしょうか?