std:shared_ptr 必踩坑
2020-09-10 22:21
537 查看
看办公室同事用std:Pshared_ptr<t> 用得风生水起,很是羡慕,于是改掉了之前老土的T*, 全部替换成std::shared_ptr</t><t>. 可没想程序刚编译过跑起来就崩掉了,去掉了老掉牙的delete。
分析原因,没有其他的改动啊。只有上面说的这个替换,不是智能指针么,怎么还会core。 堆栈打开一开,就是对应的指针指向的地方已经被释放了,但是还在一个回调线程里使用。 这个回调线程里通过使用T*的方式使用哪个指针,这样我在给回调线程传递一个参数就必须是 std::shared_ptr</t><t>::get(), 而这里引用计数不会加1. 导致外面退出后就释放了,但是回调回来发现指针为野指针了。
</t>
相关文章推荐
- 智能指针 std::auto_ptr 和 shared_ptr
- std::shared_ptr 和 std::weak_ptr的用法以及引用计数的循环引用问题
- c++11 条款19:使用std::shared_ptr来进行共享所有权的资源管理
- 【转】C++ std::tr1::shared_ptr使用
- std::auto_ptr和tr1::shared_ptr的用法
- boost::shared_ptr与std::tr1::shared_ptr
- c++中关于智能指针std::tr1::shared_ptr的用法
- error C2678 binary '<' : no operator found for map<std::string, shared_ptr<Foo>>
- 小测试:boost之shared_ptr在容器类std::list中的使用
- C++11智能指针之std::shared_ptr
- std::shared_ptr<void>的工作原理
- C++ std::tr1::shared_ptr使用说明
- Item 20: 使用std::weak_ptr替换会造成指针悬挂的类std::shared_ptr指针
- C++ - std::shared_ptr::reset
- vs2008 error C2039: “shared_ptr”: 不是“std::tr1”的成员
- c++智能指针《二》 std::tr1::shared_ptr
- STL:std::shared_ptr大致原理.
- 找不到std::shared_ptr
- tolua 转换 std::shared_ptr
- 判断std::shared_ptr是否为空