gpt4 book ai didi

c++ - std::shared_ptr 什么时候释放它的对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:47 26 4
gpt4 key购买 nike

我在使用 GCC 4.8.4 的 Ubuntu 14.04 上,我的代码类似于以下内容:

std::shared_ptr<MyClass> my_shared_object = set elsewhere...
MyFunction(*my_shared_object);

MyFunction 的签名如下所示:

void MyFunction(const MyClass& my_object)

可以找到完整的代码here

但是,我发现 my_object 实际上超出了 MyFunction 上下文中的范围。我的想法是 my_shared_object 只有在超出范围后才会释放其内容,这意味着在 MyFunction 返回之后。我不确定我是否误解了 std::shared_ptr 或者这是否是 GCC 错误。

我想这个问题可以归结为:当我取消引用 std::shared_ptr 时,这是否保证只要取消引用被使用,std::shared_ptr 就会持续存在?

最佳答案

任何由 std::shared_ptr 管理的内容都将在没有 std::shared_ptr 声明声明的那一刻被销毁,所有其他引用它的方式都是无关紧要。

并且局部变量只有在离开各自的作用域时才会被销毁。取消引用 std::shared_ptr 不会以任何方式修改它。

关于c++ - std::shared_ptr 什么时候释放它的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33812738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com