小编Pwe*_*wet的帖子

libxml2导致内存泄漏

我正在使用libxml2编写XML解析器.实际上,我完成了它,但有一个非常讨厌的内存问题.该程序首先从我的数据库中获取一些链接,所有这些链接指向XML文件.我用curl下载它们.这个过程很简单:我下载一个文件,然后解析它,依此类推......

问题似乎是解析完成时.Curl下载下一个文件,但似乎没有释放以前的XML,因为我猜libxml2将它加载到RAM中.在解析最后一个XML时,我发现自己有一个~2.6GB的泄漏(是的,其中一些文件非常大......)我的机器只有4GB的RAM.它目前有效,但将来会有更多链接添加到数据库中,所以我现在必须修复它.

我的代码非常基础:

xmlDocPtr doc;
doc = xmlParseFile("data.xml");

/* code to parse the file... */

xmlFreeDoc(doc);
Run Code Online (Sandbox Code Playgroud)

我试过用:

xmlCleanupParser();
Run Code Online (Sandbox Code Playgroud)

但是医生说:"它不会释放任何与文件相关的记忆." (http://xmlsoft.org/html/libxml-parser.html#xmlCleanupParser)

所以,我的问题是:有人知道如何释放所有这些文件相关的内存吗?

c libxml2

7
推荐指数
1
解决办法
6223
查看次数

标签 统计

c ×1

libxml2 ×1