【发布时间】:2020-05-19 08:27:33
【问题描述】:
我测试以下代码
#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(); 没有帮助。
【问题讨论】:
-
您尝试过
std::vector<type>().swap(other)技巧吗?我会尝试将xml与空的临时交换,看看会发生什么。 -
@BigTemp 我试过了。但这实际上与调用析构函数相同。
-
什么版本,编译器,操作系统,编译标志?
-
@rustyx boost 1.65,Linux 上的 g++ 7.5.0,没有额外的标志。
标签: c++ xml memory boost boost-propertytree