#pragma once //LFH class CLfhHeap { public: CLfhHeap() { m_hLfhHeap = NULL; } ~CLfhHeap(); static CLfhHeap * GetInstance(); bool InitPool(); inline void * _Alloc(size_t size) { return HeapAlloc(m_hLfhHeap, 0, size); } inline void _DeAlloc(void * memblock) { HeapFree(m_hLfhHeap, 0, memblock); } private: HANDLE m_hLfhHeap; }; /*##################################################################################################################### Boost MemPool #####################################################################################################################*/ #include "./boost/pool/pool_alloc.hpp" #if !defined(_TOOLCOMPILE) #define USE_BOOST_MEMPOOL template< typename T, typename TMutex=boost::details::pool::default_mutex > class TBoostMemoryPool { public: static void* operator new( size_t ) { return boost::fast_pool_allocator::allocate( 1 ); } static void operator delete( void* p ) { boost::fast_pool_allocator::deallocate( (boost::fast_pool_allocator::pointer)p, 1 ); } static void* operator new[]( size_t size ) { return boost::fast_pool_allocator::allocate( size ); } static void operator delete[]( void* p, size_t size ) { boost::fast_pool_allocator::deallocate( (boost::fast_pool_allocator::pointer)p, size ); } }; #define DNVector(T) std::vector #define DNList(T) std::list #define DNFastVector(T) std::vector #define DNFastList(T) std::list #else #define DNVector(T) std::vector #define DNList(T) std::list #define DNFastVector(T) std::vector #define DNFastList(T) std::list template< typename T, typename TMutex=boost::details::pool::default_mutex > class TBoostMemoryPool { }; #endif