C++ Language/Indirection/SmartPointers/SharedOwnership
Multiple std::shared_ptr<> variables can collectively manage a shared memory allocation, due to built-in reference-counting.
C++ will automatically call delete on the underlying memory once all of the smart pointer variables have released their shared-ownership of it.
Additional information about shared_ptr (includes interactive examples)