本文主要是介绍c++ free(): double free detected in tcache 2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
pInter->SetHdRegisterEndTakePhotoCb(std::bind(&FpvAerialMappingCtrlModule_Impl::CameraDeviceResultCb,this, std::placeholders::_1));
运行这行代码报此错误,因有返回值的函数结束时没有写 return 语句导致。排查了很久才发现,加上 return 语句问题解决。
int32_t FpvInterfaceModule_Impl::SetHdRegisterEndTakePhotoCb(EndTakePhotoCb&& _ptrCall {
m_ptrHwPro->HdRegisterEndTakePhotoCb(std::forward<EndTakePhotoCb>(_ptrCall));
return 0;
}
int32_t HardwareProcess::HdRegisterEndTakePhotoCb(EndTakePhotoCb&& _ptrCall) {
m_ptrMng->RegisterEndTakePhotoCb(std::forward<EndTakePhotoCb>(_ptrCall));
return 0;
}
int32_t HardwareMng::RegisterEndTakePhotoCb(EndTakePhotoCb&& _ptrCall) {
m_pPhotoSnap->PnRegisterEndTakePhotoCb(std::forward<EndTakePhotoCb>(_ptrCall));
return XAG_SUCCESS;
}
int32_t PhotoSnap_Impl::PnRegisterEndTakePhotoCb(EndTakePhotoCb&& _ptrCall){
endTakephotoCb = std::forward<EndTakePhotoCb>(_ptrCall);
return 0;
}
设置回调函数一层一层封装时大意忘了写 return,就发生了 double free detected in tcache 2 错误,导致程序跑飞。良好的编程习惯,很重要。
这篇关于c++ free(): double free detected in tcache 2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!