OS_Free[To*]

構文

#include <nitro/os.h>
void OS_FreeToHeap( OSArenaId id, OSHeapHandle heap, void* ptr );

void OS_FreeToMain( void* ptr );
void OS_FreeToSubPriv( void* ptr );
void OS_FreeToMainEx( void* ptr );
void OS_FreeToITCM( void* ptr );
void OS_FreeToDTCM( void* ptr );
void OS_FreeToShared( void* ptr );
void OS_FreeToWramMain( void* ptr );
void OS_FreeToWramSub( void* ptr );
void OS_FreeToSubPrivWram( void* ptr );

void OS_Free( void* ptr );

引数

id メモリブロックを解放するヒープのアリーナのアリーナID
heap メモリブロックを解放するヒープのハンドル
ptr 解放するメモリブロックへのポインタ

返り値

なし。

説明

メモリブロックptr を解放して ヒープ heap に返します。

ヒープのあるアリーナを指定する必要があります。アリーナはアリーナID id で指定します。この値については OS_InitArena() を参照してください。

ヒープハンドル heap に OS_CURRENT_HEAP_HANDLE を指定すると、そのアリーナのカレントヒープが指定されたものと見なします。

OS_FreeToMain()OS_FreeToHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_FreeToSubPriv()OS_FreeToHeap( OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_FreeToMainEx() OS_FreeToHeap( OS_ARENA_MAINEX, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_FreeToICTM()OS_FreeToHeap( OS_ARENA_ITCM, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_FreeToDTCM()OS_FreeToHeap( OS_ARENA_DTCM, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_FreeToShared()OS_FreeToHeap( OS_ARENA_SHARED, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_FreeToWramMain()OS_FreeToHeap( OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_FreeToWramSub()OS_FreeToHeap( OS_ARENA_WRAM_SUB, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_FreeToSubPrivWram()OS_FreeToHeap( OS_ARENA_WRAM_SUBPRIV, OS_CURRENT_HEAP_HANDLE, … ) の inline です。

OS_Free() は ARM9 では OS_FreeToHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, … ) の inline です。ARM7 では OS_FreeToHeap( OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEA_HANDLE, … ) の inline です。

(注意)
ptr
に NULL を指定すると、DEBUG ビルドでは ASSERT で停止します。それ以外のビルドでは不定かつ予測不能ですが多くの場合データアボート例外を発生します。

参照

OS_InitArena, OS_AllocFromHeap, OS_FreeAllToHeap

履歴

2004/07/07 ptr が NULL の場合についての注意を追加
2004/03/08 ARM7 と ARM9 の違いを考慮
2004/02/25 アリーナの個数が6→9に
2004/01/06 初版