compaction/coalescing, whatever....


Back in the 1990s, I used a compiler that did not

defragment its internal free list.  It's algorithm

for managing memory ensured that no matter how well

the application ensured things were deallocated, the

free list would get longer and longer and more and

more fragmented, and allocations would get slower

and slower until there was no memeory left.



When we complained to the vendor, they sent us a

package containing nothing but two pragmas.  By

withing that package into our main program, we

caused the linker to use malloc and free instead

of the vendor's run-time manager.



Result: thread-safe, efficient, reliable, RM-compliant

memory management!  So why on earth did they do what

they did in the first place?