

#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 初版