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:
    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 例外をスローします。