62 if( ((
char*) base) >= initbeg && (((
char*)base) +
size) < initend)
64 list<Memory>::iterator titr = freelist.begin();
65 list<Memory>::iterator litr = freelist.begin();
68 if( (
char*)base < titr->begaddr())
70 if(titr->begaddr() == ((
char*)base) +
size)
72 titr->begin = (
char*)base;
78 freelist.insert(titr, m);
81 else if( litr == freelist.end() )
83 if(titr->endaddr() == (
char*)base)
90 freelist.insert(litr, m);
96 while( litr != freelist.end() && litr->begaddr() < (
char*)base)
102 if(titr->endaddr() == (
char*)base)
105 if( litr == freelist.end() || litr->begaddr() != ((
char*)base) +
size)
111 titr->size += (
size + litr->size);
112 freelist.erase(litr);
117 if( litr == freelist.end() || litr->begaddr() != ((
char*)base) +
size)
122 freelist.insert(litr, m);
126 litr->begin = (
char*)base;
134 cerr <<
"Memory starting at " << base <<
" and ending at "
135 << (
void*) ((
char*) base +
size) <<
" is out of pool bounds, cannot dealloc()" << endl;