在QList中删除指针对象(由QThread继承)时崩溃

时间:2014-04-08 11:40:14

标签: c++ pointers crash delete-operator qthread

我有一个指针对象的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)之前,是否有人遇到过类似的问题?或者任何人都可以告诉问题在哪里?

0 个答案:

没有答案