我有一个长这样的类:
class FakeRunner : public QObject
{
Q_OBJECT
private:
QProcess* proc;
public:
FakeRunner();
int run()
{
if (proc)
return -1;
proc = new QProcess();
QStringList args;
QString programName = "fake.exe";
connect(comp, SIGNAL(started()), this, SLOT(procStarted()));
connect(comp, SIGNAL(error(QProcess::ProcessError)), this,
SLOT(procError(QProcess::ProcessError)));
connect(comp, SIGNAL(finished(int, QProcess::ExitStatus)), this,
SLOT(procFinished(int, QProcess::ExitStatus)));
proc->start(programName, args);
return 0;
};
private slots:
void procStarted() {};
void procFinished(int, QProcess::ExitStatus) {};
void procError(QProcess::ProcessError);
}
由于我的系统上不存在“fake.exe”,因此proc会发出error()信号。如果我按以下方式处理它,我的程序会崩溃:
void FakeRunner::procError(QProcess::ProcessError rc)
{
delete proc;
proc = 0;
}
如果我不删除指针,它还是可以很好地工作。所以问题是我应该在什么时候删除QProcess的指针?我相信我必须删除它以避免内存泄漏。FakeRunner::run()可能会被调用多次,因此如果存在泄漏,它将会增长。
谢谢!