std:shared_ptr 必踩坑

看办公室同事用std:Pshared_ptr<t> 用得风生水起,非常羡慕,因而改掉了以前老土的T*, 所有替换成std::shared_ptr</t><t>. 可没想程序刚编译过跑起来就崩掉了,去掉了老掉牙的delete。ide

分析缘由,没有其余的改动啊。只有上面说的这个替换,不是智能指针么,怎么还会core。

堆栈打开一开,就是对应的指针指向的地方已经被释放了,可是还在一个回调线程里使用。 这个回调线程里经过使用T*的方式使用哪一个指针,这样我在给回调线程传递一个参数就必须是 std::shared_ptr</t><t>::get(), 而这里引用计数不会加1. 

致使外面退出后就释放了,可是回调回来发现指针为野指针了。

</t>线程

相关文章
相关标签/搜索