c++ - 与 replaceChild 相关的内存泄漏

标签 c++ xml debugging qt memory-leaks

这是我的函数的源代码:

bool FieldModel::updateNode(QDomNode &node,const QString &parent){

  QDomElement rootOfTag;

  rootOfTag=fieldState.firstChild().firstChildElement(parent);

  qDebug()<<"Before"<<fieldState.toString();
  QDomNodeList sameTags=rootOfTag.elementsByTagName(node.firstChild().toElement().tagName());
  for(uint i=0;i<sameTags.length();i++){
      QDomNode nodeToReplace=sameTags.item(i);
      if(nodeToReplace.toElement().attribute("id")==node.firstChild().toElement().attribute("id")){
        nodeToReplace.parentNode().replaceChild(node,nodeToReplace);//Cause Memory Leak
        qDebug()<<"After"<<fieldState.toString();
        return true;
      }
  }

insertNode(node,parent);
return true;
}

我的程序的内存使用量严格增加,但是当我删除 nodeToReplace.parentNode().replaceChild(node,nodeToReplace); 行时,程序使用稳定的内存量。 我监控了 fieldState(QDomDocument),当我使用 replaceChild 时它没有增长(我做了一些小改动)。有什么问题?

谢谢。

最佳答案

在我看来像是一个 QDom 错误(这不会让我太吃惊,只是提交了一个补丁让“foo”不会让 QDom 崩溃)。尝试一个最小的例子。如果仍然泄漏并且在 Linux 或 OS X 上,您可以在 valgrind 中运行它。示例和 valgrind 输出都可以作为一个很好的错误报告。

编辑:如果 removeChild() 也为您泄漏会很有趣

关于c++ - 与 replaceChild 相关的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501441/

相关文章:

c++ - dllexport 函数未导出

javascript - 获取 XML 字段值 JavaScript

java - 调试时查看图像的 Eclipse 插件

python - Django:为什么我在运行 LiveServerTestCase 测试时无法获得回溯(以防出错)?

C++通过多个函数返回类对象

C++ vector 排序奇偶留

c++ - 内部模板类的递归特化结束

xml - 在 shell 中为 txt.txt 文件的每行创建新的文本文件

java - 无法使用 Maven 启动 FirefoxDriver

c# - 调试 .NET Async/Await 函数时无法检查变量