Valgrind参数配置详解

Valgrind相关理解

内存泄漏的定义

申请了空间,却没有释放, 但是有些时候,这个并不被程序员认为内存泄漏,比如,在进程初始化时,申请一个全局的变量用来记录某个函数被调用的次数,因为谁也不知道这个函数什么时候调用,所以只要进程存在,它就不能释放,当进程结束时,该内存会被系统回收,故对程序员来说,没有释放的必要,这种Valgrind称为still reachable;
其实,真正的内存泄漏,应该那些申请了空间,但是,在进程结束时,却发现没有指向它的指针,那么这种一定是内存泄漏,这种Valgrind称为definitely lost;

输出结果释义

definitely lost:确认丢失。这就是真正的内存泄漏,最为严重,程序中存在内存泄露,必须尽快修复。当程序结束时如果一块动态分配的内存没有被释放且通过程序内的指针变量均无法访问这块内存则会报这个错误。

indirectly lost”:间接丢失。当使用了含有指针成员的类或结构时可能会报这个错误。这类错误无需直接修复,他们总是与”definitely lost”一起出现,只要修复”definitely lost”即可。

possibly lost”:可能丢失。大多数情况下应视为与”definitely lost”一样需要尽快修复,除非你的程序让一个指针指向一块动态分配的内存(但不是这块内存起始地址),然后通过运算得到这块内存起始地址,当程序结束时如果一块动态分配的内存没有被释放且通过程序内的指针变量均无法访问这块内存的起始地址,但可以访问其中的某一部分数据,则会报这个错误。

still reachable”:可以访问,未丢失但也未释放。如果程序是正常结束的,那么它可能不会造成程序崩溃,但长时间运行有可能耗尽系统资源。如果程序是崩溃(如访问非法的地址而崩溃)而非正常结束的,则应当暂时忽略它,先修复导致程序崩溃的错误,然后重新检测。

suppressed”:已被解决。出现了内存泄露但系统自动处理了。

tool 主要参数包括

- Memcheck(默认参数), 内存泄漏检查工具
–leak-check=full 指的是完全检查内存泄漏
–show-reachable=yes 是显示内存泄漏的地点
形如:–tool=Memcheck(默认可以不写)

常用命令格式

valgrind --tool=memcheck --leak-check=full ./test

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

突破边界

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

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

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

打赏作者

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

抵扣说明:

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

余额充值