Qt 4 — проблемы QProcess

Я пытаюсь скомпилировать приложение Qt 4, которое содержит вызов QProcess.

Нет проблем скомпилировать его как Release-Version, но я всегда получаю SegmentionFault-Error при выполнении Debug-Version.

Моя версия Qt 4.8.2, и я попробовал это на Fedora и Debian OS.

У кого-нибудь из вас были подобные проблемы?
Я не могу понять это!

#include <QApplication>
#include "mainwindow.h"#include <QProcess>

class MyApplication : public QApplication{
public:
QProcess * proc;
MyApplication(int argc, char** argv) : QApplication(argc, argv){
proc = new QProcess();
}
};

int main(int argc, char *argv[])
{
MyApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

Хорошего дня,
Markus

1

Решение

Сбой вызван этой строкой:

MyApplication(int argc, char **argv);

Вы должны изменить его на:

MyApplication(int &argc, char **argv);

Причина в том, что, без ссылки, есть временная копия, которая в основном уничтожается, а ее адрес все еще сохраняется. Авария происходит при доступе впоследствии.

Смотрите предупреждение в документации из QApplication конструктор:

Предупреждение: данные, на которые ссылаются argc и argv, должны оставаться действительными в течение всего времени жизни объекта QCoreApplication. Кроме того, argc должен быть больше нуля, а argv должен содержать хотя бы одну допустимую строку символов.

Тем не менее, это, вероятно, не стоит подклассов QApplication в твоем случае. Даже если вы это сделаете, убедитесь, что вы не утечки памяти, не удаляя объект кучи, созданный для обработки фонового процесса с QProcess,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]