小知识积累-C++使用tinyxml解析Xml内存泄漏问题
2024-10-22 02:47:58
项目中需要用到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。
最新文章
- Android数据格式解析对象JSON用法(转)
- Android内存性能优化(内部资料总结) eoe转载
- CcTalk (网络协议)(转)
- popupwindow显示的位置 布局的右上角,标题栏下
- 杭电1005-Number Sequence
- Hibernate Criterion
- Gwt ListBox选中自动触发事件
- OCR怎么能离开扫描仪呢?
- php curl 抓取内容
- struts入门学习(二)
- Java使用POI实现数据导出excel报表
- MySQL系列(四)---引擎
- 【Python&;数据结构】 抽象数据类型 Python类机制和异常
- loadrunner录制时web时,安全证书问题
- LauncherModel.Callbacks接口
- Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)
- 2014新年福利,居然有人将Ext JS 4.1的文档翻译了
- 高仿qq健康
- Day15 jss整体结构梳理
- (转)MySQL慢查询分析优化 + MySQL调优