如果我在程序中使用它来启动ffmpeg命令。
QProcess *cmd1 = new QProcess();
cmd1->start(ffmpeg command);
if (!cmd1->waitForStarted())
return false;
if (!cmd1->waitForFinished())
return false;
然后在整理过程中将内存从堆中释放出来,或者我必须使用
删除cmd1。
答案 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);
但如果您无法设置父级,则需要将其删除。