shared_ptr 到 std::vector 的 shared_ptr 数据销毁
shared_ptr to std::vector of shared_ptr data destruction
假设我有一个函数 returns 一个指向某些数据的智能指针向量的智能指针。
shared_ptr<vector<shared_ptr<Data>> getVectorPtr();
auto vecPtr = getVectorPtr();
当 vecPtr 超出范围并将被销毁时,它里面的 shared_ptrs 是否也会被删除?
仅供参考:智能指针如何在内部意识到它超出了范围?
当外部共享指针超出范围(并且引用计数变为零)时,它会破坏向量。向量依次破坏它的元素(内部共享指针)。当元素引用计数也变为零时,内部对象也将被销毁。
所以在你的情况下,内部元素的破坏取决于对它们的其他可能引用。
假设我有一个函数 returns 一个指向某些数据的智能指针向量的智能指针。
shared_ptr<vector<shared_ptr<Data>> getVectorPtr();
auto vecPtr = getVectorPtr();
当 vecPtr 超出范围并将被销毁时,它里面的 shared_ptrs 是否也会被删除?
仅供参考:智能指针如何在内部意识到它超出了范围?
当外部共享指针超出范围(并且引用计数变为零)时,它会破坏向量。向量依次破坏它的元素(内部共享指针)。当元素引用计数也变为零时,内部对象也将被销毁。
所以在你的情况下,内部元素的破坏取决于对它们的其他可能引用。