Qt 4 - Problèmes QProcess
-
21-12-2019 - |
Question
J'essaie de compiler une application Qt 4 qui contient l'appel de QProcess.
Ce n'est pas un problème de le compiler en tant que Release-Version, mais j'obtiens toujours une SegmentionFault-Error lorsque j'exécute la Debug-Version.
Ma version de Qt est la 4.8.2 et je l'ai essayée sur Fedora et Debian OS.
Est-ce que quelqu'un d'entre vous a déjà eu des problèmes similaires ?Je ne peux pas comprendre!
#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();
}
Passez une bonne journée, Markus
La solution
Le crash est provoqué par cette ligne :
MyApplication(int argc, char **argv);
Vous devez le modifier pour :
MyApplication(int &argc, char **argv);
La raison en est que, sans référence, une copie temporaire est incluse qui est essentiellement détruite, tandis que son adresse est toujours stockée.Le crash se produit ensuite à l'accès.
Voir l'avertissement dans les documents de la QApplication
constructeur:
Avertissement:Les données référencées par argc et argv doivent rester valides pendant toute la durée de vie de l'objet QCoreApplication.De plus, argc doit être supérieur à zéro et argv doit contenir au moins une chaîne de caractères valide.
Cela étant dit, cela ne vaut probablement pas la peine de sous-classer QApplication
dans ton cas.Même si vous le faites, assurez-vous de ne pas perdre de mémoire en ne supprimant pas l'objet tas créé pour gérer le processus en arrière-plan avec QProcess
.