4 struct heap_memory_free_policy
7 void operator()( const T* AMemory ) const
10 ::HeapFree( ::GetProcessHeap(), 0, AMemory );
14 struct local_memory_free_policy
16 template< typename T >
17 void operator()( const T* AMemory ) const
20 ::LocalFree( AMemory );
24 struct co_task_memory_free_policy
26 template< typename T >
27 void operator()( const T* AMemory ) const
30 ::CoTaskMemFree( AMemory );
34 template< typename T,class TFreePolicy >
41 base_memory( T* AMemory = NULL )
42 : FMemory( AMemory ) {}
44 virtual ~base_memory( void )
54 void reset( T* AMemory = NULL )
56 if( AMemory != FMemory )
59 TFreePolicy( FMemory );
72 template< typename T >
73 class heap_memory : public base_memory< T,
74 heap_memory_free_policy >
77 heap_memory( T* AMemory = NULL )
78 : base_memory< T, heap_memory_free_policy >( AMemory )
81 template< typename T >
82 class local_memory : public base_memory< T,
83 local_memory_free_policy >
86 local_memory( T* AMemory = NULL )
87 : base_memory< T, local_memory_free_policy >( AMemory )
90 template< typename T >
91 class co_task_memory : public base_memory< T,
92 co_task_memory_free_policy >
95 co_task_memory( T* AMemory = NULL )
96 : base_memory< T, co_task_memory_free_policy >( AMemory )