您的位置:首页 > 其它

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>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: