# OS_InitAlloc

## 構文

      #include <nitro/os.h>

      void* OS_InitAlloc( OSArenaId id, void* arenaStart, void* arenaEnd, int maxHeaps );

## 引数

id | メモリ割り当てシステムを初期化するアリーナのアリーナID
arenaStart | アリーナの下位境界アドレス
arenaEnd | アリーナの上位境界アドレス
maxHeap | そのアリーナに確保可能な最大ヒープ数

## 返り値

ヒープ情報のための領域をアリーナ先頭に取った後の、実際のアリーナ下位境界アドレス。
32バイトアラインメントされています。

## 説明

メモリ割り当てシステムの初期化を行ないます。

アリーナID id で指定されるアリーナでヒープを作成する前に１度だけ呼ぶ必要があります。
アリーナIDの値については `OS_InitArena()` を参照してください。

アリーナの先頭に、ヒープのための情報領域を確保します。`OS_InitAlloc()` した後に返るアドレスがその領域を確保した後のアリーナの下位境界アドレス（先頭アドレス）となりますので、`OS_Set*ArenaLo()` で設定し直してください。

> (例)
> `
> void* nstart;
> // メインメモリ上に、アリーナの領域全体をヒープ用領域として初期化
> // ヒープは最大3つと宣言
> nstart = OS_InitAlloc( OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 3 );
> // アリーナの下位境界アドレス
> OS_SetMainArenaLo( nstart );
> `

設定をやり直す場合は、`OS_ClearAlloc()` でアリーナ上のメモリ割り当てシステムの情報をすべてクリアする必要があります。

## 参照

`OS_Set*ArenaLo, OS_CreateHeap, OS_ClearAlloc
`

## 履歴

2004/08/30 `OS_ClearAlloc` の記述を追加
2004/07/06 例を追加
2004/01/06 初版