When you need to create a `shared_ptr` from a newly created object, prefer `std::make_shared` function. This is guaraneed to result in only one memory allocation whereas `std::shared_ptr<T>(new T())` will result in two allocations.