内存泄露的原因

程序中的内存泄漏主要有:
  1. 用new,malloc,GolbalAlloc等函数分配的堆内存没有用delete,free,GlobalFree等释放,这些内存在Debug时候都可以Dump出信息的,但只有new在Debug的时候会正确指出出错的行,因为在Debug版本中VC对new进行了重定义,建议大家分配内存时尽量使用new

  2. 在绘图时创建的GDI对象没有释放,但如果你是使用MFC的GDI对象类,出错的几率会小得多。用new创建的对象会被检测到,而如果使用局部变量,在局部变量失效后会自动释放,不会造成内存泄漏。

  3. 创建的线程,窗口等句柄资源,在失效后没有释放掉,这个很麻烦。因为VC无法检测到未释放的句柄资源。

  在可能导致内存泄漏的地方用CMemState检测,或者以调试方式运行,结束程序的时候会Dump出一大堆内存泄漏信息的。

  内存泄漏是指程序运行时,对不再使用的(分配过的)内存空间没有进行处理,也就是没有进行释放。由于系统对内存的分配是动态的,内存是“漂移的",这样当其他程序访问到本段内存时,就容易产生问题,甚至有严重的后果。因为是把本程序的内容“泄漏”给其它程序,所以叫内存泄漏。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值