linux下检测C程序是否存在内存泄漏

我们经常担心自己的程序是否有内存泄漏,但是项目规模一旦太大不便于人工去搜寻我们就使用本文介绍的办法可以快速直到自己程序是否有内存泄漏问题。

使用这个方法我们可以快速的检查自己的程序是否有内存泄漏的问题,避免了大量的人工搜寻节省了大量的时间。

1,首先安装软件

yum -y install valgrind

2,编译时加参数-g生成debug版本

举例:我们这里故意申请了内存没手动释放

代码

#include 
#include 
#include 
#include 
#include 

int main()
{
    char **allleak = (char **)malloc(sizeof(char*));
    for(int i=0;i<10;i++)
    {
        allleack[i]=(char*)malloc(sizeof(char));
    }
    exit(0);                                                                        
}

编译

gcc main.c  -o main -g

3,检测使用的命令是:

valgrind --tool=memcheck ./main

linux下检测C程序是否存在内存泄漏_第1张图片

如图画出的地方就显示了程序的运行情况,申请了11次内存空间释放了0次。18字节被分配。(循环内的10字节和一个指针的8字节--64位机器)。

 

你可能感兴趣的:(Linux)