Re: 構造体をポィンタで使用するとエラーとなる
>>Hoge* pHoge
>>と
>>int* pI
>>の間のキャスト
>>(Hoge*)pI
>>と
>>(int*)pHoge
>>はどちらもそれぞれがまともに初期化されていたとしても
>>一般にまともな結果になりません。
>
> これは、思い違いじゃない? (void*)にキャストするってのは、割
> りとあるわけだし。
>
> あぁ、そうか。Hoge の最初のint member にアクセスするのに、pI
> にキャストしてもうまくいくとは限らないってことね。そういうア
> ーキテクチャってあるのかな?
なにも保証されていないという意味では
「まともな結果」とは言い難いのでは?
プリミティブな型へのポインタならまだしも、
構造体ではパディングの影響もあります。
実際的には例のような状況でパディングするコンパイラは
めったにないとは思いますが規格では規定されていません。
想定されているアライン境界でしかメモリアクセスを許さない
アーキテクチャでは致命的な問題につながる可能性もありそうです。
----
齊藤@生涯一趣味プロ
URI http://saito.s4.xrea.com/
e-mail saito@s4.xrea.com
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735