假设我有以下代码片段,在qto的析构函数中调用deleteLater对于它可能管理的其他QT对象是否安全?
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyQTObject qto;
qto.show();
return a.exec();
}
因为我使用泄漏检测器分析了类似的代码,并且所有被调用deleteLater的对象,除非我将其替换为普通的delete,在内存中都没有正确地释放。 如果我理解得正确,deleteLater只是在QT消息队列中注册一个删除事件。这可能是问题所在吗?因为qto的析构函数是在main作用域结束时被调用,而QT消息循环已经随着从a.exec返回而结束。因此,删除事件将永远不会被处理,事实上,甚至没有被推入消息队列,因为根本就没有队列存在?
qto
上使用delete
操作符,因为它已经存在于栈中。顺便提一下,分析器可能会报告错误的结果。 - UmNyobeqto
的子级? - thuga