内存泄漏一旦发生,将是每个C++程序员的一个可怕的恶梦。
特别是随着程序规模的扩大,线程的增加,外部环境关联的复杂度增加,
内存泄漏问题将成为一段时间内程序员挥之不去的可怕恶梦。前段时间刚和电信方调试完一个内存泄漏的程序,
半个多月的时间,
忙于在各个线程查找定位,分析;
最后终于搞定了。最深的体会:调试内存泄漏是C++程序员最头疼的恶梦。不知道大家在这方面有什么体会和高招?
特别是随着程序规模的扩大,线程的增加,外部环境关联的复杂度增加,
内存泄漏问题将成为一段时间内程序员挥之不去的可怕恶梦。前段时间刚和电信方调试完一个内存泄漏的程序,
半个多月的时间,
忙于在各个线程查找定位,分析;
最后终于搞定了。最深的体会:调试内存泄漏是C++程序员最头疼的恶梦。不知道大家在这方面有什么体会和高招?
时刻保持警惕,一旦出现,马上解决,不要等到最后的时刻统一解决。
对于需要被多次调用的函数,更是要保持警惕,如果里面发生了内存泄漏,会吃光内存的。 相反,如果一个变量在启动的时候初始化,关闭的时候删除,那么不删除也无所谓的,因为进程会自动的删除的。另外,在Dll中申请的,vc的检测会提示这些是内存泄漏,其实不是的,只不过它们是在vc报告之后才删除的。
C/C++程序使用内存,以及其他系统资源(如:句柄)都是自己申请的.有的API明确说明,申请的句柄一定要释放.可有些人就是懒.
调用系统的内存分配函数分配内存后不释放,同样会产生内存泄漏,而且编译器不会给出提示的.
句柄没释放,编译器也不会有提示,但同样产生资源泄漏.会消耗完系统资源,导致系统运行异常.系统资源泄漏比内存泄漏更难检查.
个人经验:
1.使用API时一定注意看API的备注段.很多关键的东西都在这里了.基本上,有一半以上的人不看备注段,看他们提的问题就知道他们没看.
2.有借有还.记得:出来混,是要还的.
我现在是能不用new就坚决不用。