組込み・ファームウェア
小さなマイコンのファームウェアで、mallocなどの動的なメモリの確保を避けることが多い理由として正しいものはどれか。
- AマイコンではC言語の関数を一切使えないから
- BRAMが小さく、断片化で確保に失敗したり、確保にかかる時間が予測しにくかったりするから
- C動的に確保したメモリは、電源を切っても消えないから
答えと解説を見る
正解:B. RAMが小さく、断片化で確保に失敗したり、確保にかかる時間が予測しにくかったりするから
数KB〜数百KBのRAMしかないマイコンで確保と解放を繰り返すと、空きが細かく分かれて、合計は足りていても大きな確保に失敗することがあります。何か月も動き続ける機器では、いつか失敗する危険があります。また確保にかかる時間が一定でないので、リアルタイムの処理には向きません。そのため、必要なメモリを最初に静的に確保しておく設計がよく使われます。
- A. C言語の関数は普通に使えます。
- B. 正しい。長く動き続ける機器では特に問題になります。
- C. 電源を切れば消えます。