Qt 4 - QProcess 问题
-
21-12-2019 - |
题
我正在尝试编译一个包含 QProcess 调用的 Qt 4 应用程序。
将其编译为发布版本没有问题,但当我执行调试版本时,我总是收到 SegmentionFault-Error 。
我的 Qt 版本是 4.8.2,我在 Fedora 和 Debian 操作系统上尝试过。
你们中有人遇到过类似的问题吗?我想不通!
#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();
}
祝你有美好的一天,马库斯
解决方案
崩溃是由这一行引起的:
MyApplication(int argc, char **argv);
您应该将其修改为:
MyApplication(int &argc, char **argv);
原因是,在没有引用的情况下,其中包含一个临时副本,该副本基本上会被销毁,而其地址仍然被存储。之后访问时发生崩溃。
请参阅警告 在文档中 的 QApplication
构造函数:
警告:argc 和 argv 引用的数据必须在 QCoreApplication 对象的整个生命周期内保持有效。此外,argc 必须大于零,argv 必须至少包含一个有效字符串。
话虽如此,它可能不值得子类化 QApplication
在你的情况下。即使这样做,也要确保不删除为处理后台进程而创建的堆对象,从而不会泄漏内存 QProcess
.
不隶属于 StackOverflow