项目中需要用到C++解析XML,网上搜到tinyxml这么个开源库,就用了下试试,创建对象后内部自带Clear方法,但在循环测试的时候(刚用C++做项目不久,不会什么特别的内存泄漏测试工具,于是就写个死循环反复执行功能函数),用任务管理器查看发现内存一直在增大。。。后来通过调试发现,Clear只会清除其子节点,而自己本身不会释放,所以需要自己补上。代码如下:

 #include <iostream>
#include "tinyxml.h"
#include "tinystr.h"
#include <string> using namespace std; // 创建xml文件
int CreateXmlFile1(const char *szFileName)
{
int ret = ;
// 创建一个文档对象
TiXmlDocument *myDocument = new TiXmlDocument();
// 创建一个根元素并连接
TiXmlElement *root = new TiXmlElement("root"); myDocument->LinkEndChild(root);
// 创建in节点并链接到root内
TiXmlElement *in = new TiXmlElement("in");
in->SetAttribute("ID", );
root->LinkEndChild(in);
//
TiXmlElement *CardID = new TiXmlElement("Name");
CardID->SetValue("");
in->LinkEndChild(CardID);
myDocument->SaveFile(szFileName); myDocument->Clear(); // 只是清除子节点
delete myDocument;// 释放自己
return ret;
} void main()
{
while (true)
{
CreateXmlFile1("file.xml");
}
system("pause");
}

当然其实tinyxml内部是有ClearThis方法的,不过有protected标签,所以解决该问题也可以在Clear方法内调用ClearThis方法,或者把ClearThis设为Public。

最新文章

  1. Android数据格式解析对象JSON用法(转)
  2. Android内存性能优化(内部资料总结) eoe转载
  3. CcTalk (网络协议)(转)
  4. popupwindow显示的位置 布局的右上角,标题栏下
  5. 杭电1005-Number Sequence
  6. Hibernate Criterion
  7. Gwt ListBox选中自动触发事件
  8. OCR怎么能离开扫描仪呢?
  9. php curl 抓取内容
  10. struts入门学习(二)
  11. Java使用POI实现数据导出excel报表
  12. MySQL系列(四)---引擎
  13. 【Python&amp;数据结构】 抽象数据类型 Python类机制和异常
  14. loadrunner录制时web时,安全证书问题
  15. LauncherModel.Callbacks接口
  16. Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)
  17. 2014新年福利,居然有人将Ext JS 4.1的文档翻译了
  18. 高仿qq健康
  19. Day15 jss整体结构梳理
  20. (转)MySQL慢查询分析优化 + MySQL调优

热门文章

  1. easyui焦点离开事件的解决方案
  2. git 命令记录贴
  3. Java基础(十二)IO输入输出
  4. 结构型--代理模式(Proxy)
  5. [Java反射基础三]方法反射的基本操作
  6. 动态设置热区coords的坐标
  7. IIS 网站发布——遇到的问题,以及解决方案
  8. Bzoj3105:[CQOI2013]新Nim游戏
  9. Ajax与jsonp
  10. C# ——窗体和控件随着分辨率的变化自适应大小