c++程序员的梦魇!--- 内存泄漏!

djfu 2007-10-19 04:03:48
内存泄漏一旦发生,将是每个C++程序员的一个可怕的恶梦。
特别是随着程序规模的扩大,线程的增加,外部环境关联的复杂度增加,
内存泄漏问题将成为一段时间内程序员挥之不去的可怕恶梦。

前段时间刚和电信方调试完一个内存泄漏的程序,
半个多月的时间,
忙于在各个线程查找定位,分析;
最后终于搞定了。

最深的体会:调试内存泄漏是C++程序员最头疼的恶梦。

不知道大家在这方面有什么体会和高招?
...全文
152 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sixiangduwu 2011-03-17
  • 打赏
  • 举报
回复
我正在学这个问题,可以把错误的程序发给我看看吗?当然一定保证你的知识产权不被侵犯。如果可以签协议也行。我的邮箱是584277847@qq.com
Torch009 2007-10-20
  • 打赏
  • 举报
回复
其实不光是new,delete匹配使用,还有好多情况,比如句柄啥的,这要靠经验了
WingForce 2007-10-19
  • 打赏
  • 举报
回复
最近不是流行说托管?
dyw 2007-10-19
  • 打赏
  • 举报
回复
new,delete匹配使用,预见各种可能性
archer_hao 2007-10-19
  • 打赏
  • 举报
回复
多线程的时候遇到内存泄漏的问题确实很烦人,特别是跨线程分配/释放的时候, 我觉得还是个习惯问题,尽量的把分配和释放的工作封装起来,这不是说写在一个类里面就完了,类的方法也可能被不同线程调用的. 设计的时候要考虑到这些方面.
weiym 2007-10-19
  • 打赏
  • 举报
回复
用工具检测,我一般用Boundcheck,很方便
wy2001wy 2007-10-19
  • 打赏
  • 举报
回复
这确实是很头痛的问题啊,最主要还是写的时候要注意。
我现在是能不用new就坚决不用。
龙凤呈祥焱 2007-10-19
  • 打赏
  • 举报
回复
内存泄漏只是一部分.
C/C++程序使用内存,以及其他系统资源(如:句柄)都是自己申请的.有的API明确说明,申请的句柄一定要释放.可有些人就是懒.
调用系统的内存分配函数分配内存后不释放,同样会产生内存泄漏,而且编译器不会给出提示的.
句柄没释放,编译器也不会有提示,但同样产生资源泄漏.会消耗完系统资源,导致系统运行异常.系统资源泄漏比内存泄漏更难检查.
个人经验:
1.使用API时一定注意看API的备注段.很多关键的东西都在这里了.基本上,有一半以上的人不看备注段,看他们提的问题就知道他们没看.
2.有借有还.记得:出来混,是要还的.
qq14923349 2007-10-19
  • 打赏
  • 举报
回复
我还没写过一个NEW,会出现这问题吗?
qq14923349 2007-10-19
  • 打赏
  • 举报
回复
我还没写过一个NEW,会出现这问题吗?
wjkgz 2007-10-19
  • 打赏
  • 举报
回复
保持好习惯,new 和delete配对出现,每写一个new,都找个地方给它delete了。
时刻保持警惕,一旦出现,马上解决,不要等到最后的时刻统一解决。
对于需要被多次调用的函数,更是要保持警惕,如果里面发生了内存泄漏,会吃光内存的。 相反,如果一个变量在启动的时候初始化,关闭的时候删除,那么不删除也无所谓的,因为进程会自动的删除的。

另外,在Dll中申请的,vc的检测会提示这些是内存泄漏,其实不是的,只不过它们是在vc报告之后才删除的。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧