2.10.1. ARM で提供されるヒープおよびヒープを使用する関数使用の回避

RAM が制限されているか、独自のヒープ管理を行う組み込みシステム(オペレーティングシステムなど)を開発する場合は、ヒープエリアを定義しないシステムが必要となる場合があります。 ヒープを使用しないようにするには、以下のいずれかの方法をとります。

ヒープを使用する関数が ARM ライブラリからリンクされないようにするには、コード内で __use_no_heap シンボルまたは __use_no_heap_region シンボルを参照します。 これらのシンボルは、以下のいずれかの関数を使用して、アプリケーションに 1 回だけインポートします。

ヒープを使用する関数が含まれている場合に __use_no_heap も参照されている場合には、ライブラリによってシンボルの競合が検出され、リンカによって以下のようなエラーが報告されます。

ヒープを使用しているオブジェクトを探すには、--verbose --list=out.txt とリンクし、その出力内で関連するシンボル(この場合は malloc)を検索して、そのシンボルを参照するオブジェクトを見つけます。

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0349AJ
Non-Confidential