看办公室同事用std:Pshared_ptr 用得风生水起,很是羡慕,于是改掉了之前老土的T*, 全部替换成std::shared_ptr. 可没想程序刚编译过跑起来就崩掉了,去掉了老掉牙的delete。

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

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

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