【问题标题】:QWebView Memory LeakQWebView 内存泄漏
【发布时间】:2012-10-29 03:38:15
【问题描述】:

这是代码

QWebView* webView=new QWebView(this); 
 webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
webView->load(QUrl(newsUrl));

任何情况下删除后,都会有一些内存无法删除

【问题讨论】:

    标签: c++ qt qwebview


    【解决方案1】:

    如果你在构造函数中使用 this 设置对象父级

    ( QWebView* webView=new QWebView(this); )
    

    那么你不应该直接调用delete,当你作为父级提供的类被销毁时,内存将被释放

    如果你想使用删除,那么只需像这样构造对象:

    QWebView* webView=new QWebView();
    

    【讨论】:

    • @Silence 你怎么知道有内存泄漏?你能更明确地表达你的问题吗
    • 我用的是windows操作系统,运行QWebView超过20M不能删除。
    • @Silence 我的朋友,当你调用 delete 时,内存不会在那一刻被释放,它需要一段时间,如果没有创建其他对象,它可能直到应用程序结束才被释放。 QWebView 是一个复杂的类,2012 年的 20 M 不再是问题。如果你这样做正确,内存将被释放
    • int main(int argc, char *argv[]) { QApplication a(argc, argv); QWebView* w=new QWebView(); w->settings()->setObjectCacheCapacities(0,0,0); w->load(QUrl("http://www.sina.com.cn")); w->show(); delete w; return a.exec(); }
    • @Silence 内存被释放但不是在那一刻;)只有对象被破坏。不要因为这些问题困扰你自己,它们是操作系统问题。如果你释放内存不再是你的关注和删除将在某个时候释放内存;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    相关资源
    最近更新 更多