c++ weak ptr解除指针循环引用。
2017-02-13 10:33
453 查看
看着简单,避免眼高手低,还是亲自理解一下:
#include<iostream> #include<memory> using namespace std; class Point { public: int value; shared_ptr<Point> next; weak_ptr<Point> weak_Next; Point(int v):value(v){} ~Point(){cout << "delete-point-" << value << endl;} }; //test 01-------------------------------------------- int main() { { shared_ptr<Point> p1(new Point(1)); shared_ptr<Point> p2(new Point(2)); p1->next = p2; p2->next = p1; //构成循环指向,导致最后不能释放p1/p2的空间 } cout << "life end here" << endl; system("pause"); return 0; } //test 02-------------------------------------------- /* int main() { { shared_ptr<Point> p1(new Point(1)); shared_ptr<Point> p2(new Point(2)); p1->next = p2; p2->weak_Next= p1; //其中之一使用弱指针,就没有问题。 //从p2访问p1,需要锁定weakptr以生成sharedptr: //p2->weak_Next.lock()->value; } cout << "life end here" << endl; system("pause"); return 0; } */
相关文章推荐
- 【C++】智能指针简述(五):解决循环引用的weak_ptr
- C++智能指针(三):weak_ptr--解决shared_ptr循环引用问题
- weak_ptr解除循环引用
- c++:分析智能指针shared_ptr存在的循环引用的缺陷
- weak_ptr 弱引用打破智能指针中循环引用造成的内存泄露
- C++弱引用智能指针weak_ptr的用处
- C++:智能指针-TR1的shared_ptr和weak_ptr使用介绍
- std::shared_ptr 和 std::weak_ptr的用法以及引用计数的循环引用问题
- shared_ptr 之循环引用 weak_ptr
- c++ 智能指针及 循环引用问题
- weak_ptr解决循环引用问题demo
- boost库在工作(11)引用计数的智能指针weak_ptr
- C++智能指针循环引用解决
- c++ 智能指针及 循环引用问题
- std::shared_ptr 和 std::weak_ptr的用法以及引用计数的循环引用问题
- C++智能指针--weak_ptr
- [zz] C++智能指针循环引用解决
- boost库在工作(11)引用计数的智能指针weak_ptr
- C++学习之智能指针--auto_ptr、scoped_ptr、scoped_array、shared_ptr、shared_array、weak_ptr
- C++ 智能指针shared-ptr,unique_ptr和weak-ptr