当前位置: 代码迷 >> QT开发 >> deleteLater函数和通用的delete有何区别?解决思路
  详细解决方案

deleteLater函数和通用的delete有何区别?解决思路

热度:366   发布时间:2016-04-25 05:10:12.0
deleteLater函数和通用的delete有何区别?
SMSUIMessageEditor在一个地方new出来,但这个new出来的对象,却不是用delete来销毁的。用了个看不懂的deleteLater。

deleteLater、delete这两者有什么区别呢?
C/C++ code
m_pMessageEditor = new SMSUIMessageEditor (this);void SMSUIMainDlg::onCloseNewMsgDialog (){    qDebug ("%s: %s: Entered", __FILE__, __FUNCTION__);    QObject* pObj = QObject::sender ();    if (NULL == pObj)    {         qDebug ("%s: %s: %s %d pObj is NULL ", _TIME_, __FILE__, __FUNCTION__, __LINE__);        return;    }        SMSUIMessageEditor *pDlg = qobject_cast<SMSUIMessageEditor *>(pObj);    if (NULL != pDlg)    {        pDlg->m_pwidgetcreateDlg->deleteLater ();        pDlg->deleteLater ();    }    qDebug ("%s: %s: Exit", __FILE__, __FUNCTION__);}


------解决方案--------------------
据说是因为对象可能在事件循环中存在 不能直接删 而是往消息循环中投递一个消息安全的删除 不然假如还有针对那对象的消息而对象被销毁了的话程序就崩溃了
------解决方案--------------------
就是让窗口在不用后自己手动调用delete删除,
  相关解决方案