В приложении происходит утечка памяти, поэтому в качестве временного решения я бы проверил, сколько памяти требуется, убил процесс и перезапустил приложение.
Есть ли простой способ сделать это?
Спасибо
Вы должны исправить утечку памяти. В любом случае, если вы хотите перезапустить приложение, вы можете использовать QProcess::startDetached
запустить экземпляр вашего приложения в новом процессе и отсоединиться от него. После этого вы должны выйти из приложения.
Это перезапустит ваше приложение:
QProcess process;
process.startDetached("myApp",QStringList());
qApp->quit();
Вот myApp
Имя исполняемого файла приложения. На винде это может быть myApp.exe
,
Вы можете переопределить new и delete, чтобы сохранить статистику распределения для программы, а затем, когда порог будет достигнут на основе доступного mem, abort (). Затем во внешнем скрипте вы можете перезапустить.
Также смотрите отличный монитор gimli, здесь: https://bitbucket.org/wez/gimli/wiki/Monitor
Чтобы перезапустить приложение самостоятельно, попробуйте:
#include <QApplication>
#include <QProcess>
...
// restart:
qApp->quit();
QProcess::startDetached(qApp->arguments()[0], qApp->arguments());