我有一个指针对象的QList,它在多线程应用程序中继承自QThread。例如:
QList<Object*> m_threadList;
和
class Object: QThread
但是,当所有线程完成执行时,我需要删除这些指针以防止内存泄漏。但是,当程序试图删除指针时,它总是崩溃。最有趣的是它并不总是发生。我正在做以下事情:
for(QList<Object*>::iterator it=m_threadList.begin();it!=m_threadList.end();it++)
{
if(!(*it)->isRunning() && (*it)->isFinished())
{
disconnect((*it),SIGNAL(ResultsProvider(int)),this,SLOT(ResultsListener(int)));
(*it)->exit();
(*it)->deleteLater();
if((*it)!=NULL)
delete (*it); // It always crashes here
}
}
m_threadList.clear(); // will this cause an issue with deleteLater?
这种崩溃并不总是发生。在不改变任何东西的情况下,有时它会在尝试删除指针时崩溃,有时它会顺利通过。在使用任何类型的容器存储指针对象(尤其是QThread)之前,是否有人遇到过类似的问题?或者任何人都可以告诉问题在哪里?