アロケーターによって提供されるメモリーブロックからのスケーラブルなメモリー割り当て用のテンプレート・クラス。
アロケーターが別のスケーラブル・メモリープールを参照する場合は、外側のプールを破棄または再利用する前に、内側のプールをすべて破棄する必要があります。
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:
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 例外をスローします。 |