静的メモリ割り当て
プログラムが必要とするバイトをすべてリンク時に確保し、実行時には何も要求しない、という規律。
RAM が32KBで、稼働期間が年単位のマイコンでは、malloc は便利な道具ではなく負債である。ヒープは少しずつ断片化し、導入3週間後に確保が失敗することがあり、所要時間も予測できない。MISRA C は動的確保を全面的に禁じており、多くの安全規格も同様だ。
代わりに使うのが、グローバルバッファ、静的スタック、固定サイズのプールアロケータである。こうすればリンカがビルド時に RAM の使用量を正確に報告し、メモリ不足は顧客先でのクラッシュではなくビルドエラーになる。FreeRTOS がバージョン9で xTaskCreateStatic などの関数を追加したのも、このためだ。タスクのスタックや制御ブロックまでヒープの外に置ける。