Shared_ptr 相互引用问题

class parent
{
public:
    ~parent() { std::cout <<"destroying parent\n"; }

public:
    children_ptr children;
};

class children
{
public:
    ~children() { std::cout <<"destroying children\n"; }

public:
    parent_ptr parent;
};


void test()
{
    parent_ptr father(new parent());
    children_ptr son(new children);

    father->children = son;
    son->parent = father;
}

 

在函数 test() 中,father->children = son, 使得 father 的计数器加至 2, son 同理,以至于析构 father(或son)时,仅仅是计数器减一,指针指向的资源并没有被析构。

 

 

参考

[1] http://blog.csdn.net/liuzhi1218/article/details/6993135

posted @ 2014-05-30 23:47  周卓  阅读(1053)  评论(0编辑  收藏  举报