valgrind 使用

Valgrind

Valgrind是一款用于内存调试,内存泄漏检测以及性能分析的软件开发工具。

安装

安装命令:apt-get install valgrind

安装成功后,查看安装版本号命令:valgrind -h --version

使用valgrind下的工具的命令格式:valgrind --tool = memcheck --leak-check = full ./test

查看其他命令:valgrind -h

Valgrind的的使用手册:PDF下载  https://download.csdn.net/download/wjb123sw99/10889351

MEMCHECK工具

Memcheck是一个内存错误检测器。它可以检测C和C ++程序中常见的以下问题;

在Valgrind的命令行上指定,MEMCHECK是默认工具,所以使用时可以省略--tool = MEMCHECK;

主要功能是检测下列情况:

(1):不合法内存访问,例如内存释放后又访问;

(2):使用未定义的值;

(3):内存错误释放或者未释放,例如的malloc /新和自由/删除错配;

(4):类似的memcpy的函数的SRC和DST指针使用同一个内存地址;

(5):类似的malloc的函数,大小值输入为负数;

(6):内存泄漏。

测试代码:

/* main.c */
#include <stdio.h>
#include <stdlib.h>

void test()
{
        char *p = (char *)malloc(1024);
}

int main()
{
        test();
        return 0;
}

编译命令:gcc main.c -o test

测试命令:valgrind --leak-check=full ./test

分析:

在堆总结HEAP SUMMARY栏我们可以看到提示:

如图1所示,堆在程序退出后依然有1024比特的内存在使用;

2,在堆的总结中可以看到,共申请了一次内存,释放了0次,1024byte的内存被申请过;

3,有1024byte绝对已丢失,丢失的位置在主和测试函数里

在内存泄漏总结LEAK SUMMARY栏我们可以看到提示:

1,肯定丢失绝对丢失definitely lost栏:必定有1024bytes内存已泄露

2,间接丢失间接丢失indirectly lost栏:0字节内存泄漏

3,可能丢失可能丢失possibly lost栏:0字节内存泄漏

4,仍然可达仍然可达still reachable栏:0字节内存泄漏

5,抑制suppressed栏:0bytes内存泄露

一般一款程序进行测试主要看前三项definitely lost、indirectly lost、possibly lost;

必须保证definitely lost、indirectly lost为0bytes;

possibly lost最好也过一遍,但不需要保证0bytes;

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值