小编Viz*_*zor的帖子

std :: make_shared(),std :: weak_ptr和循环引用

我的问题是这个说法:

如果任何std :: weak_ptr在所有共享所有者的生命周期结束后引用由std :: make_shared创建的控制块,则T占用的内存将持续存在,直到所有弱所有者都被销毁,如果sizeof(T)是大.资源

在这里读到,这个对象一直存在,直到最后一个weak_ptr存在.它是使用make_shared自由对象,循环引用self还是永远存在于内存中?

例如:

struct A
{
    std::weak_ptr<A> parent;
}

void fn()
{
    auto a=std::make_shared<A>();
    a->parent = a;
} // Will it destroy here or not?
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr weak-ptr make-shared c++11

3
推荐指数
1
解决办法
393
查看次数

标签 统计

c++ ×1

c++11 ×1

make-shared ×1

shared-ptr ×1

weak-ptr ×1