memory_pool テンプレート・クラス

概要

アロケーターによって提供されるメモリーブロックからのスケーラブルなメモリー割り当て用のテンプレート・クラス。

注意

アロケーターが別のスケーラブル・メモリープールを参照する場合は、外側のプールを破棄または再利用する前に、内側のプールをすべて破棄する必要があります。

構文

template <typename Alloc> class memory_pool;

ヘッダー

#define TBB_PREVIEW_MEMORY_POOL 1
 #include "tbb/memory_pool.h"

説明

memory_pool は、プロセッサーの数でスケールするようにメモリーの割り当てと解放を行います。メモリーは、テンプレート引数で指定されたアロケーターから大きなチャンク (塊) として取得され、アロケーター要件で説明されている allocatedeallocate、および value_typesizeof(value_type)>0 でなければなりません。memory_pool はメモリープール・コンセプトをモデル化します。

サンプル

#define TBB_PREVIEW_MEMORY_POOL 1
 #include "tbb/memory_pool.h"
 ...
 tbb::memory_pool<std::allocator<char> > my_pool;
 void* my_ptr = my_pool.malloc(10);
 my_pool.free(my_ptr);

上記のコードは、拡張可能なメモリープールからの単純な割り当て例です。

メンバー

namespace tbb {
 template <typename Alloc>
 class memory_pool : no_copy {
 public:
 memory_pool(const Alloc &src = Alloc()) throw(std::bad_alloc);
 ~memory_pool();
 void recycle();
 void *malloc(size_t size);
 void free(void* ptr);
 void *realloc(void* ptr, size_t size);
 };
 }
次の表は、このテンプレート・クラスのメンバーの詳細な情報を提供します。
メンバー 説明
memory_pool(const Alloc &src = Alloc())

src からコピーされた Alloc 型のメモリー・アロケーターのインスタンスを使用して、メモリープールを構築します。ランタイムにクラスのインスタンスの構築に失敗した場合、bad_alloc 例外をスローします。