NEXTOR PR 05 02

From Z80 Machines Wiki
Jump to: navigation, search

5.2. BLK_FREE:メモリブロックを解放する

エントリ:HL = BLK_ALLOCによって返される割り当て済みブロックのアドレス。               
               セグメントを初期化する場合は0 

このルーチンは、現在2ページ目で切り替えられているセグメント上のメモリブロックを解放します。指定されたアドレスは、同じセグメント上でBLK_ALLOCルーチンによって以前に返されたブロックアドレスでなければなりません。解放されたスペースは、新しい割り当てに使用可能になります。

割り当てられたブロックと空きブロックに関するすべての状態情報は、セグメント自体に格納されます。NEXTORは、ブロックメモリの割り当てに関する内部情報を格納しません。つまり、特定のセグメントに割り当てられたすべてのブロックが不要になったときに、すべてのブロックを1つずつ明示的に解放する必要はありません。代わりに、セグメントは他のデータで上書きされたり、セグメント自体が解放されたり、(TPAセグメントの場合は)アプリケーションが直接終了したりする可能性があります。

HL = 0で呼び出されると、このルーチンはブロックメモリ割り当てのために現在ページ2で切り替えられているセグメントを初期化します。セグメントに対してブロック割り当てを実行する前に、これを一度実行する必要があります。また、これはすでにブロックが割り当てられているセグメントに対して、すべてのブロックを一度に解放するための高速な方法として役立ちます。