【问题标题】:XercesDOMParser memory leak in parse function解析函数中的 XercesDOMParser 内存泄漏
【发布时间】:2018-02-09 09:48:53
【问题描述】:

我在使用XercesDomParser 和以下代码示例时出现内存泄漏:

//setup parser
auto dom_parser_ = std::make_unique<xercesc::XercesDOMParser>();
dom_parser_->setErrorHandler(error_handler_.get());
dom_parser_->setValidationScheme(xercesc::XercesDOMParser::Val_Always);
dom_parser_->setDoNamespaces(true);
dom_parser_->setDoSchema(true);
dom_parser_->setValidationSchemaFullChecking(true);

//use parser multiple times with different xml param 
xercesc::MemBufInputSource xml_buffer((const XMLByte *)xml,
                                       xml.size(), "dummy");

dom_parser_->parse(xml_buffer);

我发现函数 XercesDOMParser::parse 泄漏了内存。

是否应该在每次解析调用后显式调用某些函数以防止内存泄漏?

【问题讨论】:

标签: c++ memory-leaks xerces-c


【解决方案1】:

我发现我应该在每次解析调用后在 dom 文档上调用 release:

dom_parser_->parse(xml_buffer);
dom_parser_->getDocument()->release();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2023-03-24
    相关资源
    最近更新 更多