
Hi, I have written a small test program to measure the performance benefit of using a boost::fast_pool_allocator vs the default system allocator in conjunction with a std::multi_map. Memory overhead is ~16% lower and the boost allocator is ~4x faster - sweet. However, I can't release the allocated memory via the singleton_pool interface as described in the documentation. In my test program quoted below the call to purge_memory always returns 0 and according to window's task manager the memory has not been released. An even simpler test just using an allocator for ints and allocating/relasing/purging 10.000.000 ints works as expected. What am I doing wrong? cheers, Sören PS: I'm using boost 1.39 with MSVC2008 #include <map> #include <iostream> #include <boost/pool/pool_alloc.hpp> int main( int, char ** ) { typedef boost::fast_pool_allocator< std::pair< int, void * > > TPoolAllocator; typedef std::multimap< int, void *, std::less< int >, TPoolAllocator > TMap; { TMap map; for ( int i = 0; i < 10000000; ++i ) map.insert( std::make_pair( rand() % 100, (void *)0 )); } std::cout << boost::singleton_pool< boost::fast_pool_allocator_tag, sizeof( TPoolAllocator::value_type ) >::purge_memory(); return 0; }