相关疑难解决方法(0)

boost :: shared_ptr问题.为什么这样做?

在试验这个问题时,我创造了一个我完全不理解的例子.特别是,它突出了我对指针,引用和boost :: shared_ptr的误解.

int& r = *(new int(0));//gratuitous pointer leak, got to initialize it to something
{
    boost::shared_ptr<int> sp(new int(100));
    r = *sp;
    cout << "r=" << r << endl;
}
cout << "r=" << r << endl << endl;

int* p;
{
    boost::shared_ptr<int> sp(new int(100));
    p = &*sp;
    cout << "*p=" << *p << endl;
}
cout << "*p=" << *p << endl;
Run Code Online (Sandbox Code Playgroud)

运行此代码会得到如下输出:

r=100
r=100

*p=100
*p=13
Run Code Online (Sandbox Code Playgroud)

为什么引用在shared_ptr的死亡中存活但指针不存在?


这里的答案存在一个问题,即似乎存在两种截然相反且相互矛盾的解决方案,而且没有就真理达成共识.我希望能够在删除shared_ptr后使用引用,但如果它无效,我真的需要理解这一点.

也许有人可以发布一个简单的例子来演示引用中未定义的行为.

c++ pointers reference shared-ptr

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

标签 统计

c++ ×1

pointers ×1

reference ×1

shared-ptr ×1