Bjarne Stroustrup in his book The C++ Programming language says that:
Advice: Think twice before writing your own allocator
What does Bjarne wants to say by giving above advice? Which are the problems that can arise if I write my own allocator? Is it really problematic? How should I overcome the problems?
Together with two colleagues, Ben Zorn and Kathryn McKinley (both now at Microsoft Research), I wrote a paper about this (Reconsidering Custom Memory Allocation, OOPSLA 2002). It won a Most Influential Paper Award -- here's the citation.
The original paper actually did somewhat more than the citation: here's the abstract from the paper. The Lea allocator referred to forms the basis of the Linux allocator.
We recently did a follow-on study and found almost the exact same effect on several modern applications: the custom allocators typically slow down the application.
In addition to the fact that rolling your own custom memory allocator often means a performance and space hit, it also makes debugging harder and means that you can't ride the wave of improvements in general-purpose allocators -- that includes system-provided ones and others like Hoard and tcmalloc.