QT中函数相互调用造成内存泄漏
解决方案
- 通过在同一个类中添加信号槽,无法解决问题,qt似乎对同一个类槽函数直接用的本地函数代替,未使用信号槽机制。
- 在Appinit中使用Lamda表达式调用,失败,emit 发送信号可视为直接调用函数
- 采用定时器循环监测,避免互相调用(妥协了)
- 通过进一步测试,在connect中第五个参数设置为Qt::QueuedConnection可以避免该问题,并且两个函数运行依然在同一个线程中,详情见链接
问题实例:
//形成B->C->A->B的无限循环
connect(this,A,this,B);
void B(){
…
C();
}
void C(){
…
emit A();
return;
}