c++memory-managementstdmemory-alignmentallocator

Compelling examples of custom C++ allocators?


What are some really good reasons to ditch std::allocator in favor of a custom solution? Have you run across any situations where it was absolutely necessary for correctness, performance, scalability, etc? Any really clever examples?

Custom allocators have always been a feature of the Standard Library that I haven't had much need for. I was just wondering if anyone here on SO could provide some compelling examples to justify their existence.


Solution

  • As I mention here, I've seen Intel TBB's custom STL allocator significantly improve performance of a multithreaded app simply by changing a single

    std::vector<T>
    

    to

    std::vector<T,tbb::scalable_allocator<T> >
    

    (this is a quick and convenient way of switching the allocator to use TBB's nifty thread-private heaps; see page 59 in this document)