c++ free(): double free detected in tcache 2
·
pac->SetBdRegisterCallBack(std::bind(&AC::Callback,
this, std::placeholders::_1));
运行这行代码报此错误,因有返回值的函数结束时没有写 return 语句导致。排查了很久才发现,加上 return 语句问题解决。
int32_t AC::SetBdRegisterCallBack(CallBack&& _Cb {
m_ac->BdRegisterCallBack(std::forward<CallBack>(_Cb));
return 0;
}
int32_t BD::BdRegisterCallBack(CallBack&& _Cb) {
m_bd->RegisterCallBack(std::forward<CallBack>(_Cb));
return 0;
}
int32_t EG::RegisterCallBack(CallBack&& _Cb) {
m_eg->PnRegisterCallBack(std::forward<CallBack>(_Cb));
return XAG_SUCCESS;
}
int32_t PE::PnRegisterCallBack(CallBack&& _Cb){
CallBack = std::forward<CallBack>(_Cb);
return 0;
}
设置回调函数一层一层封装时大意忘了写 return,就发生了 double free detected in tcache 2 错误,导致程序跑飞。良好的编程习惯,很重要。
更多推荐
所有评论(0)