RAII和shared_ptr之间的关系是什么?

kad*_*ina 3 c++ raii shared-ptr

我理解RAII的概念(资源获取是初始化).它基本上说应该在析构函数中回收资源以避免任何内存泄漏.但我不明白shared_ptr是一种RAII.因为shared_ptr不保证指针将在堆栈末尾被删除.删除完全取决于计数器.那么它与RAII有什么关系呢?

das*_*ght 6

std::shared_ptr<T>将RAII扩展到具有多个所有权的资源.您不必弄清楚何时删除共享对象,而是将共享指针放下,让它破坏共享对象,但仅限于它是最后一个引用.

不将共享指针指向的对象视为该共享指针对象拥有的对象是有帮助的.相反,人们可以认为它是由指向它的所有共享指针共同拥有的.共享指针对象获取的资源不仅是对象本身,还是其引用计数器.释放对象相当于减少引用计数器,但需要注意的是,一旦引用计数降为零,就必须执行删除对象的其他操作.