0
的根节点由于我在其中替换根节点的XML文档,我在我的应用程序中使用发现了内存泄漏。我小心删除任何子节点,但使用xmlpp::Document
接口我找不到取代的根节点。替换文档
这是有问题的代码示例:
xmlpp::Document Doc;
Doc.create_root_node("root");
// Populate the document
// [...]
void ReplaceRootNode(const xmlpp::Element* NewRootNode)
{
// Remove all root node children
xmlpp::Element* RootNode = Doc.get_root_node();
const xmlpp::Node::NodeList Children = RootNode->get_children();
xmlpp::Node::NodeList::const_iterator itChild = Children.begin();
while (itChild != Children.end()) {
RootNode->remove_child(*itChild++);
}
// Replace root node
Doc.create_root_node_by_import(NewRootNode); // Leak: memory for previous root node is not freed
}
我想出了到目前为止的解决方法是编辑文档的根节点来改变它的名称和属性,但。有没有一种更简单的方法来避免这种泄漏,它不涉及以前根节点的名称和属性的版本?
我怀疑是一样的,'create_root_node_by_import'的用法不是以这种方式,因此这个问题。 –