ホームに戻る
目次 :
組み込み開発における動的メモリ(ヒープ)の使用
以下に挙げる理由から、 組み込みソフトウェアにおける動的メモリ(ヒープ)の使用は避けるべきである 。
(組み込みに限らず、ヒープの乱用はメモリリークやメモリ不足の要因となるため、必要最小限に留めるべきである。)
実行時エラーの要因となる
C/C++では、ヒープの管理はプログラマーが自ら行う必要があるため、プログラムのミスによるメモリリーク、メモリ不足、不正アクセスの危険が付きまとう。
PC上で動作するソフトウェアと異なり、再起動やクラッシュが許容されない使用状況も多いため、ソフトウェアの不安定化につながる実装は避けるべきである。
RAM容量に余裕が無い
組み込み環境ではそもそもメモリ(RAM)に余裕が無いことが多く、ヒープを用いることでメモリ不足の危険が高まる。
処理時間が予測しにくくなる
組み込みソフトウェアでは、プログラムの処理時間が短いだけでなく、予測可能である(ばらつきが少ない)ことが重要となる。
ヒープの確保、解放は処理時間が変動するため、予測可能(リアルタイム)性を損なう。
デバッグが困難
特に製品の出荷後は、ICEやデバッガを接続することができないため、メモリをダンプすることが多い。
静的メモリにのみ依存していれば、マップファイル(メモリマップ)からデータの配置を探ることができるが、ヒープに依存するとこの手法が使えない。