문제

QProcess의 호출을 포함하는 Qt 4 응용 프로그램을 컴파일하려고합니다.

릴리스 버전으로 컴파일하는 것은 아무런 문제가 없지만 디버그 버전을 실행할 때 항상 SegmentionFault 오류가 발생합니다.

내 Qt 버전은 4.8.2이며 페도라와 데비안 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

도움이 되었습니까?

해결책

이 줄에 의한 충돌이 발생합니다 :

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

이를 수정해야합니다.

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

이유는 참조없이 기본적으로 파괴되면 기본적으로 파괴되는 임시 복사본이 있습니다. 충돌은 나중에 액세스 할 때 발생합니다.

경고 QApplication 생성자의 :

경고 : ARGC 및 ARGV가 참조하는 데이터는 QCoreApplication 객체의 전체 수명 동안 유효해야합니다. 또한 ARGC는 0보다 크고 ARGV는 적어도 하나의 유효한 문자열을 포함해야합니다.

라고 말하면서, 아마도 당신의 경우에 QApplication를 서브 클래 싱 할 가치가 없을 것입니다. 그렇게하더라도 QProcess로 백그라운드 프로세스를 처리하기 위해 생성 된 힙 오브젝트를 삭제하지 않도록 메모리가 누출되지 않았는지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top