【问题标题】:Qt Memory leaks after loading new QWebview Cpp Html加载新的 QWebview Cpp Html 后 Qt 内存泄漏
【发布时间】:2015-12-08 13:25:07
【问题描述】:

我在 Cpp 中做一个 Qt 应用程序,前端在 html 中。

我的问题是:每次我加载一个新的 html 页面时,我的应用都会得到 +=5Mo。

我已经尝试删除旧页面,似乎可以工作,但每个新页面我仍然得到 +5m。

这是我的代码:

Q_INVOKABLE bool myBridge::newView(QString page)
{
    QString path = "file:///C:/Users/ITIZ32/Desktop/WLC/Borne/";
    //QString path = ("file:///" + QDir::currentPath() + "/");

    if (!(page.compare("page3.html")))
        _mediaPlayer->setTimer(10000);
    else
        _mediaPlayer->setTimer(60000);

    _view->close();
    _view = nullptr;
    delete _view;
    _view = new WebView;
    _view->load(QUrl(path + page));
    _view->page()->mainFrame()->addToJavaScriptWindowObject("bridge", this);
    _view->showFullScreen();
    _mediaPlayer->_srnsaver->timerRestart();
    return (true);
}

我已经尝试了很多东西(比如预加载向量中的所有页面),但我仍然不明白如何在我的 html 页面之间正确切换,加载总是给我泄漏。 你有什么建议可以帮助我吗?我开始绝望了。

你们中的一些人可能会看到我的旧帖子,我很抱歉再发一个,但最后一个对我没有帮助:/

【问题讨论】:

  • 对了,为什么不用QWidgets呢?

标签: html c++ qt qwebview


【解决方案1】:

在此处检查您的代码

_view->close();
_view = nullptr;
delete _view;

删除空指针无效。

先删除_view,然后将其设置为null。

在您的情况下,无需删除旧视图,只需调用 load(newurl) 即可加载网页。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多