Tinyxml的内存析构

来源:互联网 发布:网络用语你有毒的意思 编辑:程序博客网 时间:2024/06/05 08:53
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;
 }
}