鉴于下面的析构函数:
~shared_ptr(){
*_ref_count--;
if(*_ref_count==0){
delete _p;
delete _ref_count;
}
}
如果
_ref_count == 2
释放智能指针的两个线程会导致双重删除(崩溃)和/或根本没有删除(内存泄漏)以及如何?
答案 0 :(得分:0)
简单回答
是的,有竞争条件。两个线程可以同时递减和测试。
调查std :: atomic或包装在互斥锁中或使用std :: shared_ptr(最佳答案)