Ver*_*gon 4 c++ boost memory-leaks memory-management c++11
我想了解unique_ptr,shared_ptr和weak_ptr中随附C++ 11.
我听说这weak_ptr对于缓存,打破周期等等都会很好.我听说他们合作得很好shared_ptrs.
但在这方面,shared_ptrs和之间的区别是unique_ptrs什么?为什么weak_ptr只能与一个而不是另一个一起使用?为什么我不想对其他人拥有的东西进行弱引用?
从weak_ptr技术上讲,A 是一种挂起shared_ptr管理某个共享对象的一组s 的引用计数器的方法.当最后一个shared_ptr被摧毁时,对象被摧毁,但只要它有weak_ptrs,它的引用计数器就会存在.因此,通过任何仍然weak_ptr存在,您可以检查对象是否仍然存在,或已被销毁.
如果它仍然存在,那么从weak_ptr你可以获得一个shared_ptr让你引用该对象.
这主要用于打破周期.
特别是,对象可以包含weak_ptr对其自己的引用计数器的保持,这允许您shared_ptr从对象本身获取对象.也就是说,a shared_ptr使用与shared_ptr此对象相同的参考计数器.哪个是enable_shared_from_this有效的.
unique_ptr 没有任何引用计数器,因此挂起那个不存在的引用计数器是没有意义的.