2.11.1. メモリモデル

以下のいずれかのメモリモデルを選択できます。

単一メモリ領域

スタックはメモリ領域の最上部から下方に展開され、 ヒープはその領域の最下位から上方に展開されます。 これがデフォルトです。 ヒープによって管理されるメモリは縮小しません。 free() を呼び出してヒープメモリを解放しても、その領域をヒープ以外の目的に再利用することはできません。

2 メモリ領域

一方のメモリ領域がスタックに、もう一方がヒープに使用されます。 ヒープ領域のサイズはゼロに設定できます。 スタック領域は、割り当て済みのメモリ内に配置することも、実行環境から継承することもできます。

デフォルトの単一領域モデルではなく、2 つの領域によるモデルを使用するには、以下のいずれかを使用します。

  • アセンブリ言語の IMPORT __use_two_region_memory

  • C 言語の #pragma import(__use_two_region_memory)

Note

2 つの領域によるメモリモデルを使用している場合、ヒープメモリが割り当てられていなければ、malloc() を呼び出すことも、stdio を使用することも、main() のコマンドライン引数を取得することもできません。

ヒープ領域のサイズをゼロに設定し、__user_heap_extend() をヒープを展開できる関数として定義した場合、ヒープは必要に応じて作成されます。

ヒープまたはヒープ領域が使用されていない場合の警告メッセージの生成方法については、ストレージ管理のカスタマイズ__use_no_heap の説明を参照して下さい。

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