...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::pool_allocator — A C++ Standard Library conforming allocator, based on an underlying pool.
// In header: <boost/pool/poolfwd.hpp> template<typename T, typename UserAllocator, typename Mutex, unsigned NextSize, unsigned MaxSize> class pool_allocator { public: // construct/copy/destruct pool_allocator(); template<typename U> pool_allocator(const pool_allocator< U, UserAllocator, Mutex, NextSize, MaxSize > &); // public member functions bool operator==(const pool_allocator &) const; bool operator!=(const pool_allocator &) const; // public static functions static pointer address(reference); static const_pointer address(const_reference); static size_type max_size(); static void construct(const pointer, const value_type &); static void destroy(const pointer); static pointer allocate(const size_type); static pointer allocate(const size_type, const void * const); static void deallocate(const pointer, const size_type); };
Template parameters for pool_allocator are defined as follows:
T Type of object to allocate/deallocate.
UserAllocator. Defines the method that the underlying Pool will use to allocate memory from the system. See User Allocators for details.
Mutex Allows the user to determine the type of synchronization to be used on the underlying singleton_pool.
NextSize The value of this parameter is passed to the underlying singleton_pool when it is created.
MaxSize Limit on the maximum size used.
Note | |
---|---|
The underlying singleton_pool used by the this allocator constructs a pool instance that is never freed. This means that memory allocated by the allocator can be still used after main() has completed, but may mean that some memory checking programs will complain about leaks. |
pool_allocator
public
construct/copy/destructpool_allocator();
Results in default construction of the underlying singleton_pool
IFF an instance of this allocator is constructed during global initialization ( required to ensure construction of singleton_pool
IFF an instance of this allocator is constructed during global initialization. See ticket #2359 for a complete explanation at http://svn.boost.org/trac/boost/ticket/2359) .
template<typename U> pool_allocator(const pool_allocator< U, UserAllocator, Mutex, NextSize, MaxSize > &);
Results in the default construction of the underlying singleton_pool
, this is required to ensure construction of singleton_pool
IFF an instance of this allocator is constructed during global initialization. See ticket #2359 for a complete explanation at http://svn.boost.org/trac/boost/ticket/2359 .
pool_allocator
public member functionsbool operator==(const pool_allocator &) const;
bool operator!=(const pool_allocator &) const;
pool_allocator
public static functionsstatic pointer address(reference r);
static const_pointer address(const_reference s);
static size_type max_size();
static void construct(const pointer ptr, const value_type & t);
static void destroy(const pointer ptr);
static pointer allocate(const size_type n);
static pointer allocate(const size_type n, const void * const);
allocate n bytes
Parameters: |
|
static void deallocate(const pointer ptr, const size_type n);
Deallocate n bytes from ptr
Parameters: |
|