アロケーターによって提供されるメモリーブロックからのスケーラブルなメモリー割り当て用のテンプレート・クラス。
アロケーターが別のスケーラブル・メモリープールを参照する場合は、外側のプールを破棄または再利用する前に、内側のプールをすべて破棄する必要があります。
template <typename Alloc> class memory_pool;
#define TBB_PREVIEW_MEMORY_POOL 1 #include "tbb/memory_pool.h"
memory_pool は、プロセッサーの数でスケールするようにメモリーの割り当てと解放を行います。メモリーは、テンプレート引数で指定されたアロケーターから大きなチャンク (塊) として取得され、アロケーター要件で説明されている allocate、deallocate、および value_type が sizeof(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: explicit 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); }; }
メンバー | 説明 |
---|---|
explicit memory_pool(const Alloc &src = Alloc()) | src からコピーされた Alloc 型のメモリー・アロケーターのインスタンスを使用して、メモリープールを構築します。ランタイムにクラスのインスタンスの構築に失敗した場合、bad_alloc 例外をスローします。 |