22 #ifndef _BLAZE_UTIL_MEMORYPOOL_H_
23 #define _BLAZE_UTIL_MEMORYPOOL_H_
55 template<
typename Type,
size_t Blocksize >
116 inline void free(
void* rawMemory );
154 template<
typename Type,
size_t Blocksize >
158 for(
size_t i=0; i<Blocksize-1; ++i ) {
171 template<
typename Type,
size_t Blocksize >
174 delete [] rawMemory_;
190 template<
typename Type,
size_t Blocksize >
204 template<
typename Type,
size_t Blocksize >
207 for(
typename Blocks::iterator it=
blocks_.begin(); it!=
blocks_.end(); ++it )
218 template<
typename Type,
size_t Blocksize >
241 template<
typename Type,
size_t Blocksize >
258 template<
typename Type,
size_t Blocksize >
261 for(
typename Blocks::const_iterator it=
blocks_.begin(); it!=
blocks_.end(); ++it )
264 if( toRelease >= it->rawMemory_ && toRelease < it->rawMemory_+Blocksize )
267 const byte*
const ptr1( reinterpret_cast<const byte*>(toRelease) );
268 const byte*
const ptr2( reinterpret_cast<const byte*>(it->rawMemory_) );
270 if( ( ptr1 - ptr2 ) %
sizeof(
FreeObject) != 0 )
return false;
275 if( ptr == toRelease )
return false;