小编bus*_*a83的帖子

Qt C++析构函数需要很长时间才能返回

我正在开发一个非常标准的Qt移动应用程序(用C++编写,针对Symbian设备),我发现有时当应用程序关闭时(即通过调用QApplication :: quit),应用程序中的最终析构函数可能需要很长时间才能返回(30秒加).我的意思是,析构函数中的所有清理操作都已完成(快速,一秒钟内完成)并且我们已经达到执行离开析构函数并返回到隐式调用它的代码的位置(即当我们删除时)物体).

很明显,在那一点上,我希望执行会在调用删除对象之后立即返回,但是正如我所说的那样,有时这已经过了一个年龄!

这个长时间关闭时间在调试和发布版本中都会发生,启用或禁用日志记录,所以我不认为这是一个因素.当我们到达析构函数的末尾时,我非常确定没有文件句柄保持打开状态,或者任何其他开放资源(网络连接等)......尽管它们肯定不会出现问题退出析构函数(?).

这是删除应用程序的QMainWindow对象.目前,执行此操作的调用是在连接到QApplication :: aboutToQuit的插槽中,尽管我也尝试在应用程序"main"函数中删除该对象.

我们遇到的延迟时间似乎与我们退出前应用中的活动量成正比.这种情况让我觉得内存泄漏可能是一个问题,但我们并不知道任何事情(当然并不意味着没有任何问题),而且我之前从未见过这种泄漏内存的行为.

有没有人想到这里会发生什么?

干杯

c++ qt destructor symbian

5
推荐指数
1
解决办法
1014
查看次数

标签 统计

c++ ×1

destructor ×1

qt ×1

symbian ×1