Using shared_ptr to share a memory resource
Managing dynamically allocated objects or arrays with std::unique_ptr
is not possible when the object or array has to be shared. This is because an 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 an std::shared_ptr
.
Getting ready
Make sure you read the previous recipe, Using unique_ptr to uniquely own a memory resource, to become familiar with how unique_ptr
and make_unique()
work. We will use the foo
, foo_deleter
, Base
, and Derived
classes defined in this recipe, and also make several references...