Linux系统调试——valgrind内存泄露检测

本文介绍了如何使用Valgrind检测代码中的内存泄露问题,包括下载安装步骤,测试程序示例(如test.c),以及如何编译并运行Valgrind进行内存泄漏检查,指出test.c中的越界访问错误和未释放内存。
摘要由CSDN通过智能技术生成

代码可能存在内存泄露怎么办?

使用valgrind可以对代码进行内存泄露检测。

valgrind下载安装

下载:https://www.valgrind.org/downloads/

安装:

1、tar –jxvf valgrind-3.21.0.tar.bz2
2、cd valgrind-3.21.0
3、./configure --prefix=/home/xx/valgrind-3.21.0/install
4、make
5、make install

--prefix为指定安装路径,可以不指定,使用默认的,即执行./configure 

内存泄露测试

测试程序test.c

分配40个字节的buffer,越界访问buf[10].

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void test()
{

        int *buf = (int *)malloc(10*sizeof(int));
        buf[10] = 0x55;

}

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

编译:

gcc -g -o test test.c

编译时注意加上-g选项

使用valgrinid测试:

./valgrind --leak-check=yes ./test

 结果显示,产生错误的地方在test.c15main函数中,即调用test()函数。具体的在test.c的第9行,test函数内,即buf[10] = 0x55;语句。

根据提示信息,可知valgrind检测到了2个错误:

  • 存在无效的写入数据,即数组越界访问

  • 内存泄露,分配了40字节没有释放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值