Patchalloc is a C++ allocator that is very efficient when handling many small memory requests (for example, from lists). When deallocating, the memory is added to a memory pool and will be recycled if memory of the same size is requested. The source code is available here:
patchalloc.h
patchalloc.cpp
The allocator can be used by providing the patchalloc type to the container, for example:

std::list<int, patch_allocator::patchalloc<int> >