QT QProcess内存管理

时间:2013-12-10 05:37:56

标签: qt memory-management

如果我在程序中使用它来启动ffmpeg命令。

QProcess *cmd1 = new QProcess();

cmd1->start(ffmpeg command);

if (!cmd1->waitForStarted())
    return false;

if (!cmd1->waitForFinished())
return false;

然后在整理过程中将内存从堆中释放出来,或者我必须使用

删除cmd1。

2 个答案:

答案 0 :(得分:5)

或者,或者另外,您可以将过程设置为在完成后自行删除: -

// using Qt 5 connect syntax
connect(cmd1, &QProcess::finished, cmd1, &QProcess::deleteLater);

如果传递给QProcess对象的父对象的生命周期可能比QProcess对象所需的寿命长得多,那么这可能是首选方法。

答案 1 :(得分:3)

如果您将Parent设置为QProcess,如下所示,则无需手动删除它。

Parent可以是创建QProcess的QObject。

QProcess *cmd1 = new QProcess(parent);

但如果您无法设置父级,则需要将其删除。