QT 4 - QProcessの問題
-
21-12-2019 - |
質問
QProcessの呼び出しを含むQT 4アプリケーションをコンパイルしようとしています。
リリースバージョンとしてコンパイルするのは問題ありませんが、デバッグバージョンを実行すると常にSegmentionFaultエラーが発生します。
マイ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
解決
クラッシュはこの行によって原因:
MyApplication(int argc, char **argv);
.
あなたはそれを変更するべきです:
MyApplication(int &argc, char **argv);
.
理由は、参照なしに、基本的に破壊される一時的なコピーがあり、そのアドレスはまだ保存されています。クラッシュはその後アクセスで行われます。
警告 QApplication
コンストラクタのドキュメント :
警告:argcとargvによって参照されるデータは、QCoreApplicationオブジェクトの寿命全体に有効でなければなりません。さらに、argcはゼロより大きくなければならず、argvは少なくとも1つの有効な文字列を含める必要があります。
言われているのは、おそらくあなたの場合にQApplication
をサブクラス化する価値がないです。たとえあなたがしていても、QProcess
を使用してバックグラウンドプロセスを処理するために作成されたヒープオブジェクトを削除しないことで、メモリをリークしないようにしてください。
所属していません StackOverflow