A custom memory allocator

When trying our custom memory manager with a specific type, it worked great! There is a problem, though. It turns out that the class-specific operator new is not called on all the occasions that we first might have expected. Consider the following code:

auto user = std::make_shared<User>("John"); 

What happens when we want to have std::vector of 10 users?

auto users = std::vector<User>{}; 
users.reserve(10); 

In neither of the two cases is our custom memory manager being used. Why? Starting with the shared pointer, we have to go back to the example earlier where we saw that std::make_shared() actually allocates memory for both reference counting data and the object it should point to. There is no way that std::make_shared() ...

Get C++ High Performance now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.