linux 下内存泄漏分析

本文介绍了在Linux环境下,特别是大型C/C++项目中,如何面对和检测内存泄漏问题,着重推荐了Valgrind工具,尤其是其memcheck功能,能检测多种内存相关错误,如野指针、内存越界和内存泄露等。
摘要由CSDN通过智能技术生成

linux 下内存泄漏分析

Linux下内存问题检测神器:Valgrind

在写大型C/C++工程时难免会发生内存泄漏现象,系统编程中一个重要的方面就是有效地处理与内存相关的问题。
你的工作越接近系统,你就需要面对越多的内存问题。有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦。
常见的内存问题一共七种:

  1. 动态内存泄露;malloc分配的,没有及时dellet调
  2. 资源泄露,比如文件指针不关闭;
  3. 动态内存越界;
  4.数组内存越界;
  5.动态内存double free;
  6.使用野指针,即未初始化的指针;
  7.释放野指针,即未初始化的指针。

内存问题非常难定位,对于小工程来说,简单去检查代码中new和delete的匹配对数就基本能定位到问题,
但是一旦代码量上升到以万单位时,仅靠肉眼检查来定位问题那就非常困难了,
所以我们需要利用工具帮助我们找出问题所在。

在Linux系统下内存检测工具首推Valgrind,一款非常好用的开源内存管理框架。
Valgrind其实是一个工具集,内存错误检测只是它众多功能的一个,
但我们用得最多的功能正是它——memcheck。

该工具可以检测下列与内存相关的问题 :

  1.未释放内存的使用(使用野指针)
  2.对释放后内存的读/写(使用野指针)
  3.从已分配内存块尾部的读/写(动态内存越界)
  4.内存泄露(没有成对地使用malloc/free和new/delete)
  5.不匹配的使用malloc/new/new[] 和 free/delete/delete[]
  6.重复释放内存(double free的情况同样是根据malloc/free的匹配对数来体现的)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder ᅟᅠ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值