QT中的内存泄漏问题如何解决 5C

void MainWindow::on_ThermalButton_clicked()
{
thermaldialog = new ThermalDialog ;
thermaldialog->exec();
}

我在父窗口点击按钮 出来一个新的 Dialog 在关闭这个Dialog 问题是怎么避免内存泄漏问题

c++

5个回答

void MainWindow::on_ThermalButton_clicked()
{
thermaldialog = new ThermalDialog (this);
thermaldialog->exec();
}

ThermalDialog thermaldialog = new ThermalDialog ;
thermaldialog->show();

函数内部的变量可以在函数结束后释放,你new的指针被释放了,但指针所指向的内存并没有被释放,造成了内存泄露,
但如果主程序结束这部分内存还是会被释放的;
所以要想在函数结束时立即释放,就不要用new了,如下即可:
ThermalDialog thermaldialog;
thermaldialog.show();

thermaldialog = new ThermalDialog ;
thermaldialog->exec();

再加一句
delete thermaldialog;

构造函数跟this指针即可不管了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐