2013-09-27 4 views
-1

Приложение является утечкой памяти, так как временное решение я бы проверил, сколько памяти он занимает, убить процесс и перезапустить приложение.Qt C++ перезагрузился

Есть ли простой способ сделать это?

Спасибо

+0

Почему вы должны сделать это, а не фиксировать утечки путем интроспекции в Valgrind или аналогичный выход? Во всяком случае, не могли бы вы написать обертку для своего приложения, которая вызывает «бесплатную» утилиту или использует «/ proc/meminfo», закрывает ваше приложение и перезагружает его? Трудно сделать правильно для кросс-платформенного, но это, безусловно, возможно. – lpapp

ответ

0

Вы можете отменить новые и удалять, чтобы сохранить статистику распределения для программы, а затем, когда будет достигнут порог на основе имеющихся мем, прервать(). Затем во внешнем скрипте вы можете перезапустить.

см Также отлично Гимли монитор, здесь: https://bitbucket.org/wez/gimli/wiki/Monitor

+0

У вас есть пример, иллюстрирующий это? –

+0

Не удобно, нет. Я думаю, что подход valgrind, чтобы найти утечку, предложенную Ласло Паппом выше, является хорошим здесь. – rileyberton

1

Вы должны устранить утечку памяти. В любом случае, если вы хотите перезапустить приложение, вы можете использовать QProcess::startDetached для запуска экземпляра вашего приложения в новом процессе и отсоединения от него. После этого вы должны выйти из приложения.

Это будет перезапустить приложение:

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

qApp->quit(); 

Здесь myApp это имя исполняемого файла приложения. В Windows это может быть myApp.exe.

0

Чтобы перезапустить приложение само по себе, попробуйте:

#include <QApplication> 
#include <QProcess> 

... 

// restart: 
qApp->quit(); 
QProcess::startDetached(qApp->arguments()[0], qApp->arguments()); 
Смежные вопросы