C++程序内存泄漏都与哪些方面有关,该如何处理和避免


动态内存分配有几种: 一个是用了malloc/free, new/delete 第二个使用了第三方的库,库里面的API使用了第一种方法,他们需要你来释放空间,这个会在库的说明文档里有说明。 第三是程序 递归,大量的程序递归和互相调用而不推出导致栈空间不断扩大,而导致 内存不足 第四是隐含的内存分配,比如使用vector等库,他们提供 数组范围动态扩大。不过程序中不断向数组 添加元素,实际上也是在申请内存。 第五可能是 系统调用。比如 多线程程序,使用了 消息机制之后,消息的发送方不断发送消息,接收方来不及处理,导致系统的 消息队列溢出,同样会内存不足。 第六可能是多线程。不断申请新的 线程,会导致线程空间不断增多。每个线程有自己的独立 堆栈 数据区,也是很大的内存开销。 现在能想到的就这么多,你的这几种都有可能。 办法, 1使用调试运行。调试运行下, 调试器会在崩溃前停下来。你可以看看崩溃前的运行信息,也许有助于判断原因。 2使用一个插件,叫做vld。我个人在用,他能发现动态内存分配的 内存泄漏现象,即上面的第一和第二种原因。VC6可用,英文的,外国人写的,不好意思。 http://www.codeproject.com/KB/applications/visualleakdetector.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值