简单说说Linux中valgrind进行内存检测

本文详细介绍了Valgrind的用途、安装方法,以及如何使用其Memcheck工具检测内存泄漏。涵盖了内存泄漏产生的原理、Valgrind的基本选项和错误处理,以及其在Callgrind、Cachegrind和Helgrind等其他工具中的应用。
摘要由CSDN通过智能技术生成

目录

1. 内存泄漏的产生

2. Valgrind使用的目的

3. 安装 Valgrind 的命令

4. 如何使用Valgrind

5.valgrind 基本选项

6.valgrind错误相关选项。

7.valgrind还能干什么


1. 内存泄漏的产生

内存泄漏(Memory Leak) 是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果!


2. Valgrind使用的目的

Valgrind 是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。在人为编写代码不能预防消除内存泄漏的情况下,使用该工具对代码进行检测。


3. 安装 Valgrind 的命令

sudo apt-get install valgrind

4. 如何使用Valgrind

使用示例程序 malloc.c 

#include <stdlib.h>
int main() 
{
    void *p;
    p = malloc(20);
    return 0;
}

malloc申请内存以后没有释放内存
然后输入命令 gcc –g malloc.c -o malloc编译,加入 -g 参数的目的是为了定位在第几行.

执行 valgrind --tool=memcheck --leak-check=full ./malloc,其中 --leak-check=full 指的是完全检查内存泄漏,

得到查询的结果:

==4339== Memcheck, a memory error detector
==4339== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==4339== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==4339== Command: ./a.out
==4339== 
==4339== 
==4339== HEAP SUMMARY:
==4339==     in use at exit: 20 bytes in 1 blocks //退出时使用:1块中20字节
==4339==   total heap usage: 1 allocs, 0 frees, 20 bytes allocated //总堆使用量:1个分配,0个释放,20个字节分配
==4339== 
==4339== 20 bytes in 1 blocks are definitely lost in loss record 1 of 1 //1块中的20个字节肯定在1的丢失记录中丢失
==4339==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4339==    by 0x10865B: main (main.c:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

子木呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值