cache_chunklist クラス
1 つのサイズのメモリ ブロックを割り当ておよび割り当て解除するブロック アロケーターを定義します。
構文
template <std::size_t Sz, std::size_t Nelts = 20>
class cache_chunklist
パラメーター
Sz
割り当てられる配列内の要素の数。
解説
このクラス テンプレートは operator new を使用して生メモリ チャンクを割り当て、必要なときにブロックをサブ割り当てしてメモリ ブロック用の記憶域を割り当てます。また、割り当てが解除されたメモリ ブロックをチャンクごとの独立したフリー リストに格納し、どのメモリ ブロックも使用中でないときは operator delete を使用してチャンクの割り当てを解除します。
各メモリ ブロックは、Sz バイトの使用可能なメモリと、そのブロックが属しているチャンクへのポインターを保持します。 各チャンクは、Nelts
メモリ ブロック、3 つのポインター、int、operator new と operator delete に必要なデータを保持します。
コンストラクター
コンストラクター | 説明 |
---|---|
cache_chunklist | cache_chunklist 型のオブジェクトを構築します。 |
メンバー関数
メンバー関数 | 説明 |
---|---|
allocate | メモリのブロックを割り当てます。 |
deallocate | 指定した位置で始まるストレージから、指定された数のオブジェクトを解放します。 |
要件
ヘッダー: <allocators>
名前空間: stdext
cache_chunklist::allocate
メモリのブロックを割り当てます。
void *allocate(std::size_t count);
パラメーター
count
割り当てられる配列内の要素の数。
戻り値
割り当てられたオブジェクトへのポインター。
解説
cache_chunklist::cache_chunklist
cache_chunklist
型のオブジェクトを構築します。
cache_chunklist();
解説
cache_chunklist::d eallocate
指定した位置で始まるストレージから、指定された数のオブジェクトを解放します。
void deallocate(void* ptr, std::size_t count);
パラメーター
ptr
記憶域から割り当てを解除される最初のオブジェクトへのポインター。
count
記憶域から割り当てを解除されるオブジェクトの数。