首页 > 解决方案 > Boost.PropertyTree 不会在析构函数中释放内存

问题描述

我测试以下代码

#include <boost/property_tree/xml_parser.hpp>

namespace pt = boost::property_tree;

int main()
{
  { //1
    pt::ptree xml;
    pt::read_xml("very_big_xml.xml", xml);
    // xml.clear(); //destructor should do the job
  }
  { //2
    pt::ptree xml;
    pt::read_xml("very_big_xml.xml", xml);
  }
}

在第一部分之后,我的应用程序占用了大量内存(~6GB),并且由于内存不足而在第二部分崩溃。我应该手动释放属性树吗?文档说析构函数应该清理。

注意:取消注释xml.clear();没有帮助。

标签: c++xmlmemoryboostboost-propertytree

解决方案


对我来说工作正常,boost::property_tree析构函数按预期释放内存(Boost 1.73)。

boost::property_tree 内存使用情况

尝试在应用程序崩溃时运行gdb并获取回溯 ( )。bt

还可以尝试valgrind使用较小的文件运行以查看它是否报告任何泄漏。


推荐阅读