# 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 アリーナの個数が６→９に
2004/01/06 初版