00001 // This creates space for the freelist variable 00002 Link* Link::freelist = NULL; 00003 00004 void* Link::operator new(size_t) { // Overload new operator 00005 if (freelist == NULL) return ::new Link; // Create new space 00006 Link* temp = freelist; // Otherwise, get from freelist 00007 freelist = freelist->next; 00008 return temp; // Return the link 00009 } 00010 00011 void Link::operator delete(void* ptr) { // Overload delete operator 00012 ((Link*)ptr)->next = freelist; // Put on freelist 00013 freelist = (Link*)ptr; 00014 }