Free 関数
以前に Alloc メソッドによって同時実行ランタイムのキャッシュ サブアロケーターに割り当てられたメモリ ブロックを解放します。
_CRTIMP void __cdecl Free(
void * _PAllocation
);
パラメーター
- _PAllocation
以前に Alloc メソッドによって割り当てられた解放するメモリへのポインター。 _PAllocation パラメーターの値が NULL に設定されている場合、このメソッドはそれを無視してすぐに制御を戻します。
解説
キャッシュ サブアロケーターは、多数のスレッドで一部のブロック サイズを解放しながら何度か割り当てを行う必要がある場合に使用します。 サブアロケーターは、C ランタイム ヒープの上のキャッシュ層です。 同時実行ランタイムは、スケジューラの仮想プロセッサごとにサブアロケーターを 1 つ作成すると共に、アロケーター メソッドを使用するアプリケーションによって作成されたスレッドごとにサブアロケーターを 1 つ作成します。
特定のサイズ ブロックのキャッシュを構築したら、ロックを保持したり、メモリ バリアを実行したりすることなく、割り当てと解放を行うことができます。 ブロック サイズの各サブアロケーターのキャッシュが空の場合、割り当てはヒープから行われます。ブロック サイズを基準に、キャッシュがある一定のサイズに達すると、ブロックは C ランタイム ヒープに解放されます。
メモリを大量に使用するアプリケーションの場合、キャッシュ サブアロケーターを使用すると、想定よりも早くメモリを使い果たす可能性があります。 その理由として、サブアロケーターは他のサブアロケーターにキャッシュされたブロックを使用できないことと、特定のスレッドが特定の時点でアクセスできない大量のメモリがサブアロケーターにキャッシュされる可能性があることが挙げられます。
必要条件
ヘッダー: concrt.h
名前空間: Concurrency