C++内存泄露的问题
2013-09-04 00:59
218 查看
遇到一个很头疼的内存泄露的问题,调试的大半天才发现的,指针指向的对象1被delete了两次,而在VS2005中,debug中断的位置不是这个被多次delete的对象1,而是另外一个对象2,在释放它的时候,提示访问了未知的堆栈。
虽然没有在内存中仔细进行调试,不过可以揣测出问题原因是,在多次释放对象1的时候,释放掉了对象2的资源,导致在释放对象2的资源的时候,访问未知的堆内存异常,而对象2在代码中new和delete的代码是没有问题的,所以得找出对象1的异常,而在编译器中没有提示,这个问题就隐藏得比较深。
如何避免这样内存泄露问题再次出现呢
1.规范代码的编写,涉及到指针操作一定要小心再小心,不要遗漏问题。
2.时常进行迭代测试,防止问题累计,这样就可以在修改或者增加了新代码的地方进行重点的调试,而刚才出现的这个问题,也只能通过检查代码来找出问题的所在。
虽然没有在内存中仔细进行调试,不过可以揣测出问题原因是,在多次释放对象1的时候,释放掉了对象2的资源,导致在释放对象2的资源的时候,访问未知的堆内存异常,而对象2在代码中new和delete的代码是没有问题的,所以得找出对象1的异常,而在编译器中没有提示,这个问题就隐藏得比较深。
如何避免这样内存泄露问题再次出现呢
1.规范代码的编写,涉及到指针操作一定要小心再小心,不要遗漏问题。
2.时常进行迭代测试,防止问题累计,这样就可以在修改或者增加了新代码的地方进行重点的调试,而刚才出现的这个问题,也只能通过检查代码来找出问题的所在。
相关文章推荐
- C++虚析构函数的使用(可能造成内存泄露问题)
- C++内存泄露问题解决方案(转)
- C++内存泄露问题
- C++内存泄露问题
- C++中vector内存泄露问题
- C++ protocol buffer内存泄露问题
- C/C++刁钻问题各个击破之序言
- C/C++隐式类型转换导致的若干问题
- C++指针问题与学习
- ACM最长单调递增子序列问题(动态规划)o(n*n)C++实现
- C++中构造函数和析构函数避免调用虚函数的问题
- 改善C++ 程序的150个建议学习之建议32:借助工具监测内存泄漏问题
- C++面试集锦( 面试被问到的问题 )
- c/c++中字符输入问题
- 为一个朋友解答的C++小问题
- C++ 变量要注意的问题
- c++内存中字节对齐问题详解
- C++实验四-输出星状图、三色球问题
- 背包问题C++程序
- C++模板的编译问题