struct {
uint64_t a; char z[120];
} b;
...
struct buffer_with_alignment_requirement* c = (struct buffer_w*)&b;
c->start_using_it;
最初の membera
がないと、バッファ内のフィールドにアクセスするときにクラッシュする可能性があります。このようなメンバーを単純に追加して、構造体全体のアライメントを強制的に厳密にすることは、移植可能で正しいですか?
これはポインターのエイリアシングに関する問題ではなく、単にb
スタック上のアドレスが常に 8 バイトでアラインされているかどうかに関する問題です。