C++内存泄漏及解决办法

1.C++内存泄漏是什么?

  • 内存泄漏指的是由于疏忽或错误造成了程序未能释放掉不再使用的内存。

2.造成的后果

  • 性能不良,内存会耗尽

3.C++没有垃圾回收机制,我们需要关注那些类型的内存泄漏?

  • 堆内存泄漏。在内存中程序员手动分配的一块内存,malloc\realloc\new。完成相关操作后,没有调用相对应的free\delete释放掉内存,这时这块内存就会常驻内存,造成堆内存泄漏
  • 系统资源泄漏。分配给程序使用的资源没有使用相应函数释放,如bitmap\handle\socket.

4.内存泄漏排查

  • BoundsChecker,定位运行时发生的各种错误
  • 调试运行DEBUG版程序,运用以下技术:CRT(C run-time libraries)、运行时函数调用堆栈、内存泄漏时提示的内存分配序号(集成开发环境OUTPUT窗口),综合分析内存泄漏的原因,排除内存泄漏。
  • linux工具之检测内存泄漏-valgrind,功能强大,不仅仅是内存泄漏检测工具。

5.怎么有效解决内存泄漏问题?

  • 智能指针。因为智能指针可以自动删除分配的内存。智能指针和普通指针类似,只是不需要手动释放指针,而是通过智能指针自己管理内存的释放。关于智能指针见 next --.–。
  • 8
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值