如何为窗口分配内存,然后在关闭时清除它?

时间:2019-01-17 10:41:30

标签: c++ qt memory-management

我正在尝试创建一个挂在托盘中并按需显示窗口的应用程序。该窗口占用大量内存,因此我想在关闭窗口时释放所有内存。

我正尝试通过以下方式做到这一点:

QApplication a(argc, argv);

auto trayMenu = new QMenu;
trayMenu->addAction(QIcon::fromTheme("folder"), "Open main window", [] {
    auto mainWindow = new MainWindow;
    mainWindow->show();
});

QSystemTrayIcon trayIcon(QIcon::fromTheme("folder"));
trayIcon.setContextMenu(trayMenu);
trayIcon.show();

return QApplication::exec();

在MainWindow构造函数中,我在关闭时指定了delete属性:

setAttribute(Qt::WA_DeleteOnClose);

开始时,应用程序消耗约5 MB。打开窗口后,该应用程序将消耗约170 MB的内存。但是,关闭窗口后,消耗量不会改变。同样,当我重新打开和关闭窗口时,应用程序继续消耗尽可能多的内存(没有任何变化)。 是否可以完全释放窗口的所有内存? 我正在使用Linux。

0 个答案:

没有答案