<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Language" content="en-us"> <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> <link href="../pool.css" rel="stylesheet" type="text/css"> <title>pool_alloc - Boost Pool Standard Allocators Implementation</title> </head> <body> <img src="../../../../boost.png" width="276" height="86" alt="C++ Boost"> <h1 align="center">pool_alloc - Boost Pool Standard Allocators Implementation</h1> <h2>Dependencies</h2> <p>Includes the system headers <span class="code"><new></span> and <span class="code"><limits></span>.</p> <p>Includes the Boost headers <span class= "code">"singleton_pool.hpp"</span> (see <a href= "singleton_pool.html">singleton_pool.html</a>) and <span class= "code">"detail/mutex.hpp"</span> (see <a href= "mutex.html">mutex.html</a>).</p> <h2>Synopsis</h2> <pre class="code"> template <typename T, typename UserAllocator = default_user_allocator_new_delete, typename Mutex = details::pool::default_mutex, unsigned NextSize = 32> class pool_allocator { public: ... // public interface public: // extensions to public interface typedef Mutex mutex; static const unsigned next_size = NextSize; template <typename U> struct rebind { typedef pool_allocator<U, UserAllocator, Mutex, NextSize> other; }; }; template <typename T, typename UserAllocator = default_user_allocator_new_delete, typename Mutex = details::pool::default_mutex, unsigned NextSize = 32> class fast_pool_allocator { public: ... // public interface public: // extensions to public interface typedef Mutex mutex; static const unsigned next_size = NextSize; template <typename U> struct rebind { typedef fast_pool_allocator<U, UserAllocator, Mutex, NextSize> other; }; }; </pre> <h2>Extensions to Public Interface</h2> <h3>Additional template parameters</h3> <h4 class="code">Mutex</h4> <p>This parameter allows the user to determine the type of synchronization to be used on the underlying singleton pool. See the extensions to the public interface of <a href="singleton_pool.html">singleton pool</a> for more information.</p> <h4 class="code">NextSize</h4> <p>The value of this parameter is passed to the underlying Pool when it is created. See the extensions to the public interface of <a href= "pool.html">pool</a> for more information.</p> <h3>Modification of <span class="code">rebind</span></h3> <p>The struct <span class="code">rebind</span> has been redefined to preserve the values of the additional template parameters.</p> <h3>Additional members</h3> <p>The typedef <span class="code">mutex</span> and the static const value <span class="code">next_size</span> publish the values of the template parameters <span class="code">Mutex</span> and <span class= "code">NextSize</span>, respectively.</p> <h2>Notes</h2> <p>A number of common STL libraries contain bugs in their using of allocators. Specifically, they pass null pointers to the <span class= "code">deallocate</span> function, which is explicitly forbidden by the Standard [20.1.5 Table 32]. PoolAlloc will work around these libraries if it detects them; currently, workarounds are in place for:</p> <ul> <li>Borland C++ (Builder and command-line compiler) with default (RogueWave) library, ver. 5 and earlier</li> <li>STLport (with any compiler), ver. 4.0 and earlier</li> </ul> <h2>Future Directions</h2> <p>When the Boost multithreading library is completed, the <span class= "code">Mutex</span> parameter will be replaced by something from that library providing the same flexibility and will move from an implementation detail into the interface specification.</p> <h2><a href="../interfaces/pool_alloc.html">Interface Description</a></h2> <hr> <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src= "../../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional" height="31" width="88"></a></p> <p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->05 December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38516" --></p> <p><i>Copyright © 2000, 2001 Stephen Cleary (scleary AT jerviswebb DOT com)</i></p> <p><i>Distributed under the Boost Software License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy at <a href= "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p> </body> </html>