kip*_*622 4 c++ resource-management shared-ptr c++11
我使用GCC 4.8.4在Ubuntu 14.04上,我的代码类似于以下内容:
std::shared_ptr<MyClass> my_shared_object = set elsewhere...
MyFunction(*my_shared_object);
Run Code Online (Sandbox Code Playgroud)
其中MyFunction的签名如下所示:
void MyFunction(const MyClass& my_object)
Run Code Online (Sandbox Code Playgroud)
完整的代码可以在这里找到
但是,我发现my_object实际上超出了范围MyFunction.我的想法是,my_shared_object只有在超出范围后,意志才会释放其内容,这意味着在MyFunction返回之后.我不确定我是误解std::shared_ptr还是可能这是一个GCC错误.
我想这个问题归结为:当我取消引用std :: shared_ptr时,这是否保证std::shared_ptr只要使用取消引用就会持续存在?
无论什么由一个人管理std::shared_ptr将被破坏的那一刻没有std::shared_ptr左声明主张,所有其他方式来引用它是无关紧要的.
并且局部变量仅在离开相应范围时被销毁.取消引用a std::shared_ptr不会以任何方式修改它.
| 归档时间: |
|
| 查看次数: |
943 次 |
| 最近记录: |