如何释放内存
How to release memory?
我已经为我的大学作业创建了一个简单的QT应用程序。 我所做的是从上面的QMainWindow弹出一个新的QManinWindow。当我从主 UI 单击按钮时,它会弹出一个新的 QMainWindow 对象(记事本)
记事本也是一个 QMainWindow 对象
我的问题是当我创建对象时,它会从 ram 中占用一些内存,但是当我关闭它(弹出窗口)时,内存没有释放。当我每次按下按钮时,都会分配内存,但应用程序在关闭内存时不会释放内存。请检查应用程序的主屏幕。
我只是想知道如何释放那段记忆。我尝试了很多东西,但没有一个效果很好。
我已经在记事本类上设置了 closeEvent 公共,当它被触发时,我从主对象侦听关闭事件,我已经删除了弹出的对象。但它会导致广告意外停止。
void MainWindow::on_notePadBtn_clicked()
{
NotePad *notePad = new NotePad(this);
notePad->raise();
notePad->activateWindow();
notePad->show();
}
NotePad::NotePad(QWidget *parent) :QMainWindow(parent),ui(new Ui::NotePad) {
ui->setupUi(this);
this->setWindowTitle("Note Pad");
}
你真的不需要覆盖closeEvent
,Qt有Qt::WA_DeleteOnClose属性,它完全可以做你想要的,你可以这样使用它:
//...
NotePad *notePad = new NotePad(this);
notePad->setAttribute(Qt::WA_DeleteOnClose);
notePad->raise();
notePad->activateWindow();
notePad->show();
//...
我不熟悉Qt。
但据我了解,如果您使用运算符 new必须使用 delete
(在可以访问使用 new 创建的指针的范围内)。
Object *foo = new Object();
// Do stuff with foo...
delete foo;
// DO NOT use foo from now on.
希望这有所帮助,也许。就像我说的我不熟悉Qt因此,如果您对某些功能的实现方式有疑问,您应该查看他们的文档。
(参见:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf§3.7.4p63)
相关文章:
- 包含矢量指针的结构的内存释放问题
- Valgrind 声称内存释放中的自由空间太多
- 当 C 和 C++ 中严格要求内存释放时
- C++ 中指针变量的内存释放
- 德克内存释放
- 临时对象 c++ 的内存释放
- C 全局对象变量内存释放
- C++矢量动态内存释放/删除
- 从 cv::Mat 初始化的 IplImage 的内存释放
- SWIG类型映射中的内存释放
- STL容器中的内存释放
- QWebView内存释放
- 内存释放 C++
- 大返回值(如字符串)的内存释放如何在C++中发生
- 重新分配之前的内存释放
- Linux C++ 中的内存释放
- VS2012编译器奇怪的内存释放问题
- 调试断言失败!错误的内存释放
- 负责 COM 互操作中的内存释放
- imread命令后OpenCV矩阵内存释放