質問: ### 前提・実現したいこと 構造体のメモリ配置について教えてください。 構造体の各要素のポインタは基本的に連続してますが、 アライメントの関係上要素のサイズ(bit数)以上の距離が開くことがあることを知りました。 このポインタ間の距離は、コンパイルした実行ファイル単位でいつも同一でしょうか? (電源を入りきりした場合・再度実行した場合に、いつも同じ距離でメモリに配置されるかどうか) 現在、外部フラッシュにデータを保存する際の位置を構造体のメモリ位置を元に求めているのですが、 不変の配置でない場合、別の手段を考えなくてはなりません。 よろしくお願いします。 ### 補足情報(FW/ツールのバージョンなど) 環境:ルネサス製マイコン RX210 コンパイラ:CC-RXコンパイラ V2.03.00
回答: > > このポインタ間の距離は、コンパイルした実行ファイル単位でいつも同一でしょうか? > > > 同一です。 > > アライメントの関係上要素のサイズ(bit数)以上の距離が開くことがあることを知りました。 > > > コンパイルの設定で開ける・開けないは制御することができます。 ユーザーズマニュアルp.26にある`-pack` `-unpack`がそれに該当すると思います(CC-RXコンパイラを持っていないので確認はしてませんが)。 興味があれば`-pack` `-unpack`で構造体のサイズがどう変わるか見てみるとよいでしょう。