C++内存泄露问题
2011-12-29 11:43
344 查看
在园子里也有1个月的时间。总想写点什么,但都不知道写点什么好。今天做项目发现一个问题。查的很久后来才发现,写出来共享一下。
问题是这样子的:用C++写的一个MES引擎,当引擎运行起来以后 不会报错也跑起来也很正常,但内存却一直在增长。
一般出现此问题的是new出来的没有释放才导致此问题的出现。可引擎中所有new出来的对象都已经释放了。找来找去后来才发现,map<对象指针> 没有被释放。
总结:1、做C++无论是做大工程还是小程序都应该注意new出来的对象 记得“及时”释放 delete 对象;
2、关于模板对象保存指针 应该采用遍历删除对象指针。 或者内存将一直占有直到程序退出。
if(!m_map.IsEmpty()){
POSITION pos;
CString key;
LoadByDay *pLoadByDay;
for( pos =m_map.GetStartPosition(); pos != NULL; )
{
m_map.GetNextAssoc( pos, key, (LoadByDay*&)pLoadByDay );
delete pLoadByDay;//这里很重要
}
m_map.RemoveAll();//等对象都删除的才清空
}
问题是这样子的:用C++写的一个MES引擎,当引擎运行起来以后 不会报错也跑起来也很正常,但内存却一直在增长。
一般出现此问题的是new出来的没有释放才导致此问题的出现。可引擎中所有new出来的对象都已经释放了。找来找去后来才发现,map<对象指针> 没有被释放。
总结:1、做C++无论是做大工程还是小程序都应该注意new出来的对象 记得“及时”释放 delete 对象;
2、关于模板对象保存指针 应该采用遍历删除对象指针。 或者内存将一直占有直到程序退出。
if(!m_map.IsEmpty()){
POSITION pos;
CString key;
LoadByDay *pLoadByDay;
for( pos =m_map.GetStartPosition(); pos != NULL; )
{
m_map.GetNextAssoc( pos, key, (LoadByDay*&)pLoadByDay );
delete pLoadByDay;//这里很重要
}
m_map.RemoveAll();//等对象都删除的才清空
}
相关文章推荐
- C++中vector内存泄露问题
- C++ protocol buffer内存泄露问题
- C++虚析构函数的使用(可能造成内存泄露问题)
- C++内存泄露的问题
- C++内存泄露问题
- C++内存泄露问题解决方案(转)
- 托管C++项目链接非托管C++静态链接库几个问题
- 【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
- 机器人登山问题(c++)
- 算法设计与分析--求最大子段和问题(蛮力法、分治法、动态规划法) C++实现
- C++ 随机变量赋值问题
- C++多个构造函数的问题
- 约瑟夫环问题(顺序表)——C++实现
- 【C++】指针的一些问题Mark
- 最大子数组问题-暴力求解-c++代码实现及运行实例结果
- C++ 中类函数占用存储空间的问题
- Let the Balloon Rise问题:c++
- C++异常, 一个测试异常传递切割问题的程序
- C++问题
- [C++]模板类的声明与实现分离问题