Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt c++;如何在加载新HTML页面后释放内存 我在HTML/CSS中用C++做QT应用程序。_Html_C++_Qt_Ram - Fatal编程技术网

Qt c++;如何在加载新HTML页面后释放内存 我在HTML/CSS中用C++做QT应用程序。

Qt c++;如何在加载新HTML页面后释放内存 我在HTML/CSS中用C++做QT应用程序。,html,c++,qt,ram,Html,C++,Qt,Ram,每次我加载一个新的html页面(或者如果我重新加载一个页面),应用程序都会获得+5mo内存,退出后不会获得自由。(因此,在10页之后,我获得了+50mo内存) 我已经准备好将我的页面加载到一个向量中,但是每次加载都会增加5百万。 我还考虑过在线程中加载页面,这样在使用后它们就会被销毁。 保持下降闸板重量是一种可行的解决方案吗 由于我是一个新手,我可能在做一些愚蠢的事情:下面是我加载新视图的代码: Q_INVOKABLE bool myBridge::newView(

每次我加载一个新的html页面(或者如果我重新加载一个页面),应用程序都会获得+5mo内存,退出后不会获得自由。(因此,在10页之后,我获得了+50mo内存)

我已经准备好将我的页面加载到一个向量中,但是每次加载都会增加5百万。 我还考虑过在线程中加载页面,这样在使用后它们就会被销毁。 保持下降闸板重量是一种可行的解决方案吗

由于我是一个新手,我可能在做一些愚蠢的事情:下面是我加载新视图的代码:

Q_INVOKABLE bool                myBridge::newView(QString page)
{
    QString                         path = ("file:///" + QDir::currentPath() + "/");

    if (!(page.compare("page3.html")))
        _mediaPlayer->setTimer(10000);
    else
        _mediaPlayer->setTimer(60000);
    _view->close();
    _view = new WebView;
    _view->load(QUrl(path + page));
    _view->page()->mainFrame()->addToJavaScriptWindowObject("bridge", this);
    _view->showFullScreen();
    _mediaPlayer->_srnsaver->timerRestart();
    return (true);
}

您能看到此代码中有错误吗?

每次调用此方法时,您都会创建一个新的
WebView
,并且很可能永远不会删除上一个。这自然会导致内存泄漏,因为没有释放任何内容。调用
close()
不会删除对象。

您在函数中创建了一个新的
WebView
,但您似乎从未删除过旧的视图?我将尝试将_视图放在TMPview中,以laod我的新页面,并将旧的initialize
视图删除为
nullptr
(或
0
NULL
)在执行
new
之前,只需调用do
delete
。哦,在尝试通过调用
\u view->close()
取消对指针的引用之前,请检查空指针。初始化\u view to nullptr对+5mo://\u view->close()没有帮助_视图=空ptr;删除(u)视图;_视图=新的网络视图;顺便说一句,视图永远不会为空删除导致我发信号:/n您需要
删除
以前的webviev。如果你调用
close()
或删除空指针(或未初始化),因为你甚至没有检查
\u view
是否指向某个地方,你会得到sigsegv。@EtienCenter你是否在开始时将
\u view
初始化为空以确保它不指向内存中的随机位置?我使用“new”作为视图的开头,我知道它不是空的?不但我试试看ty@EtienneCtrs在调用此方法之前?然后它被初始化,删除它不应该引起问题。但是如果仅在这个方法中,您在
new
之前调用
close()
delete