在创建多线程后,如果在关闭程序前对资源没有进行回收,则会弹出错误。
1.一般来说,直接调用线程的quit()方法即可结束进程,回收内存。
2.若在程序运行的过程中意外终止,如强行关闭等,就会出现上面的错误。所以需要如下处理:
对closeEvent进行重写,即在关闭程序前对内存进行回收。使用的方法有
thread->terminate();
thread->wait();
具体实现为:
closeEvent(QCloseEvent *ev) { qDebug()<<"before wait"; thread->terminate(); thread->wait(); qDebug()<<"after wait"; QMainWindow::closeEvent(ev); }