Приложение является утечкой памяти, так как временное решение я бы проверил, сколько памяти он занимает, убить процесс и перезапустить приложение.Qt C++ перезагрузился
Есть ли простой способ сделать это?
Спасибо
Приложение является утечкой памяти, так как временное решение я бы проверил, сколько памяти он занимает, убить процесс и перезапустить приложение.Qt C++ перезагрузился
Есть ли простой способ сделать это?
Спасибо
Вы можете отменить новые и удалять, чтобы сохранить статистику распределения для программы, а затем, когда будет достигнут порог на основе имеющихся мем, прервать(). Затем во внешнем скрипте вы можете перезапустить.
см Также отлично Гимли монитор, здесь: https://bitbucket.org/wez/gimli/wiki/Monitor
У вас есть пример, иллюстрирующий это? –
Не удобно, нет. Я думаю, что подход valgrind, чтобы найти утечку, предложенную Ласло Паппом выше, является хорошим здесь. – rileyberton
Вы должны устранить утечку памяти. В любом случае, если вы хотите перезапустить приложение, вы можете использовать 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());
Почему вы должны сделать это, а не фиксировать утечки путем интроспекции в Valgrind или аналогичный выход? Во всяком случае, не могли бы вы написать обертку для своего приложения, которая вызывает «бесплатную» утилиту или использует «/ proc/meminfo», закрывает ваше приложение и перезагружает его? Трудно сделать правильно для кросс-платформенного, но это, безусловно, возможно. – lpapp