O'Reilly logo

C++ High Performance by Bjorn Andrist, Viktor Sehr

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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() ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required