Managing dynamically allocated objects or arrays with std::unique_ptr is not possible when the object or array has to be shared because a std::unique_ptr retains its sole ownership. The C++ standard provides another smart pointer, called std::shared_ptr; it is similar to std::unique_ptr in many ways, but the difference is that it can share the ownership of an object or array with other std::shared_ptr. In this recipe, we will see how std::shared_ptr works and how it differs from std::uniqueu_ptr. We will also look at std::weak_ptr, which is a non-resource-owning smart pointer that holds a reference to an object managed by a std::shared_ptr.
Using shared_ptr to share a memory resource
Getting ready
Make sure you read the previous recipe, Using...