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 で指定されるアリーナでヒープを作成する前に1度だけ呼ぶ必要があります。
アリーナ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 初版