C++ Qt C++;重新开始

C++ Qt C++;重新开始,c++,qt,restart,C++,Qt,Restart,该应用程序内存泄漏,因此作为临时解决方案,我将检查需要多少内存,终止进程并重新启动该应用程序 有什么简单的方法吗 谢谢您可以覆盖new和delete以保留程序的分配统计信息,然后在达到基于可用内存的阈值时,中止()。然后在外部脚本中可以重新启动 还可以在此处查看优秀的gimli监视器:您应该修复内存泄漏。如果希望重新启动应用程序,可以使用QProcess::startDetached在新进程中运行应用程序的实例并从中分离。之后,您应该退出应用程序 这将重新启动您的应用程序: QProcess p

该应用程序内存泄漏,因此作为临时解决方案,我将检查需要多少内存,终止进程并重新启动该应用程序

有什么简单的方法吗


谢谢

您可以覆盖new和delete以保留程序的分配统计信息,然后在达到基于可用内存的阈值时,中止()。然后在外部脚本中可以重新启动


还可以在此处查看优秀的gimli监视器:

您应该修复内存泄漏。如果希望重新启动应用程序,可以使用
QProcess::startDetached
在新进程中运行应用程序的实例并从中分离。之后,您应该退出应用程序

这将重新启动您的应用程序:

QProcess process;
process.startDetached("myApp",QStringList());

qApp->quit();

此处
myApp
是应用程序可执行文件的名称。在Windows上,它可以是
myApp.exe

要自行重新启动应用程序,请尝试:

#include <QApplication>
#include <QProcess>

...

// restart:
qApp->quit();
QProcess::startDetached(qApp->arguments()[0], qApp->arguments());
#包括
#包括
...
//重新启动:
qApp->quit();
QProcess::StartDetailed(qApp->arguments()[0],qApp->arguments());

为什么需要这样做,而不是通过检查valgrind或类似输出来修复泄漏?无论如何,您不能为您的应用程序编写一个调用“free”util或use“/proc/meminfo”的包装器,关闭应用程序,然后重新启动它吗?对于跨平台而言,很难做到正确,但这肯定是可能的。您是否碰巧有一个例子来说明这一点?不方便,不。我认为上面Laszlo Papp建议的valgrind方法查找泄漏是一个很好的方法。