shared_ptr解决了scoped_ptr管理单个对象的缺陷,且解决了防拷贝的问题。shared_ptr可以管理多个对象,并且实现了资源共享。
但是仍然存在一些问题,比如,我们熟悉的双向链表:
struct Node{
Node(const int& value)
:_pNext(NULL)
,_pPre(NULL)
,_value(value)
{}
Node* _pNext;
Node* _pPre;
int _value;
};
这个双向链表对于shared_ptr会有什么影响呢?
1、shared_ptr的循环引用问题
先看如下代码:
#include<iostream>
using namespace std;
#include<boost/shared_ptr.hpp>
template<typename T>
class Node
{
public:
Node(const T& value)
:_pNext(NULL)
,_pPre(NULL)
_value(value)
{}
shared_ptr<Node<T>> _pNext;
shared_ptr<