Tinyxml的值在使用时最好是new出来的,因为其在析构的时候会遍历整个树,将树中的节点析构掉。但是没有在树中的节点将不会被自动施放,正是这种半自动的释放带来了问题。
ReplaceChild()方法中,我们插入的值是否需要释放呢,通过查看内部的代码,它是clone一个然后加入树的,也就是说,原来的值如果是new出来就需要释放。
void set_node(TiXmlElement* element,const char* value)
{
TiXmlText* tmp1 = new TiXmlText(value);
TiXmlNode* node = element->FirstChild();
if(node == NULL)
{
element->LinkEndChild(tmp1);
}
else
{
element->ReplaceChild(node,*tmp1);
delete tmp1;
}
}