For some time I have been using a set of heap allocation functions with
WinAVR that I developed in C and based on a C++ class proposed by Bruno
Preiss. IMHO it seems to perform better than the existing
malloc/realloc/free functions in the library, particularly at high
fragmentation levels.
While that is just my experience, I have put a description of the code
and a version for AVRgcc on
http://www.jennaron.com.au/avr/DoublyLinkedMemory.html. I would
appreciate others giving it a good thrashing and if it stands up, with
the possibility (without being presumptuous) of including it in the
distribution.