キャストでミスアラインメント

組み込みとかはミスアラインメントがやばい。


int a;
char *b;

b = (char *)&a;

これはやばい。intからcharへのキャストはミスアラインメントが起こる可能性がある。逆は特に問題ない(気がする)。
実はよく知らないんだけども、たぶんintで定義すると4バイトのレジスタに格納されて、それが1バイト単位でアクセスできない場合はミスアラインメントが起こるということじゃないかなぁ。PCだと大丈夫だったりするから性質が悪い。

という、漠然としたあまり意味があるとは思えないメモ。

コスミー について

昔(?)はゲーム作ってました。 今もなんか作ろうとしています。
カテゴリー: C言語 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。