zoukankan      html  css  js  c++  java
  • tinyxml一些应注意的问题

     今天在对使用tinyxml库的程序调试的时候,出现的一些问题让人很纠结,特记以此...
    在对TixmlDocument创建时我是用new创建的,然后在用完之后我用delete释放掉,可是用gdb调试的时候出现double free,然后我注释掉了delete,调试通过。但是另一个问题又出现了,在另一函数中我Load相同的xml文件时出现malloc错误,就是LoadFile源码中 TIXML_STRING filename( _filename )出错了,这让我情何以堪,纠结了很长时间都没有遭到办法。
      出于对new TixmlDocument之后又不能delete的不适,我放弃了在堆上创建TixmlDocument的方法,改用在栈上创建TixmlDocument,其他的一些节点元素则还是用new创建。修改之后,调试通过。
      new出来的其他节点只要是连接到TixmlDocument,都不要手动销毁,因为在析构TixmlDocument的时候,其相应的子节点也是会被一起销毁的,其析构代码如下
     1 TiXmlNode::~TiXmlNode()
     2 {
     3     TiXmlNode* node = firstChild;
     4     TiXmlNode* temp = 0;
     5 
     6     while ( node )
     7     {
     8         temp = node;
     9         node = node->next;
    10         delete temp;
    11     }    
    12 }

    所以我的观点是以后在用tinyxml时,TixmlDocument最好在栈上创建,其子节点都应用new在堆上创建,否则在TixmlDocument析构的时候不会将子节点销毁

  • 相关阅读:
    linux查询php.ini位置
    laravel打印完整SQL语句
    python识别图片中的文字
    python -使用pytesseract识别文字时遇到的问题
    python弹出选择文件的弹出窗获取文件方法
    python将字符串中多个空格换为一个空格
    python生成word文档
    linux下tar命令
    python使用xpath获取内容
    正则表达式匹配空行
  • 原文地址:https://www.cnblogs.com/lpxblog/p/5644387.html
Copyright © 2011-2022 走看看