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