memory_pool_allocator Template Class

Summary

Template class that provides the C++ allocator interface for memory pools.

Syntax

template<typename T> class memory_pool_allocator;

Header

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

Description

A memory_pool_allocator models the allocator requirements described in Table 29 except for default constructor which is excluded from the class. Instead, it provides a constructor, which links with an instance of memory_pool or fixed_pool classes, that actually allocates and deallocates memory. The class is mainly intended to enable memory pools within STL containers.

Example

#define TBB_PREVIEW_MEMORY_POOL 1
 #include "tbb/memory_pool.h"
 ...
 typedef tbb::memory_pool_allocator<int>
 pool_allocator_t;
 std::list<int, pool_allocator_t>
 my_list(pool_allocator_t( my_pool ));

The code above provides a simple example of cnostruction of a container that uses a memory pool.

Members

namespace tbb {
 template<typename T>
 class memory_pool_allocator {
 public:
 typedef T value_type;
 typedef value_type* pointer;
 typedef const value_type* const_pointer;
 typedef value_type& reference;
 typedef const value_type& const_reference;
 typedef size_t size_type;
 typedef ptrdiff_t difference_type;
 template<typename U> struct rebind {
 typedef memory_pool_allocator<U> other;
 };
 memory_pool_allocator(memory_pool &pool) throw();
 memory_pool_allocator(fixed_pool &pool) throw();
 memory_pool_allocator(const memory_pool_allocator& src) throw();
 template<typename U>
 memory_pool_allocator(const memory_pool_allocator<U,P>& src) throw();
 pointer address(reference x) const;
 const_pointer address(const_reference x) const;
 pointer allocate( size_type n, const void* hint=0);
 void deallocate( pointer p, size_type );
 size_type max_size() const throw();
 void construct( pointer p, const T& value );
 void destroy( pointer p );
 };
 template<>
 class memory_pool_allocator<void> {
 public:
 typedef void* pointer;
 typedef const void* const_pointer;
 typedef void value_type;
 template<typename U> struct rebind {
 typedef memory_pool_allocator<U> other;
 };
 memory_pool_allocator(memory_pool &pool) throw();
 memory_pool_allocator(fixed_pool &pool) throw();
 memory_pool_allocator(const memory_pool_allocator& src) throw();
 template<typename U>
 memory_pool_allocator(const memory_pool_allocator<U>& src) throw();
 };
 template<typename T, typename U>
 inline bool operator==( const memory_pool_allocator<T>& a,
              const memory_pool_allocator<U>& b);
 template<typename T, typename U>
 inline bool operator!=( const memory_pool_allocator<T>& a,
              const memory_pool_allocator<U>& b);
 }
The following table provides additional information on the members of this template class.
Member Description
memory_pool_allocator(memory_pool &pool)

Constructs memory pool allocator serviced by memory_pool instance pool.

memory_pool_allocator(fixed_pool &pool)

Constructs memory pool allocator serviced by fixed_pool instance pool.