Clear只会清除其子节点,而自己本身不会释放
原代码
void TiXmlNode::Clear()
{
TiXmlNode* node = firstChild;
TiXmlNode* temp = 0;
while ( node )
{
temp = node;
node = node->next;
delete temp;
}
firstChild = 0;
lastChild = 0;
}
改进后代码(递归删除)
void TiXmlNode::Free()
{
if(!firstChild) {
return;
}
TiXmlNode* node = firstChild;
TiXmlNode* temp = 0;
while ( node )
{
node->Free();
temp = node;
node = node->next;
delete temp;
}
firstChild = 0;
lastChild = 0;
}