Windows底下的VS可以去调用_CrtDumpMemoryLeaks(),查看内存是否泄漏。
那么Linux底下如何检测程序中是否内存泄漏呢?
Linux中有一款工具:valgrind,可以用它来检测内存是否泄漏。
如果没有安装可以先去安装:
yum -y install valgrind
安装完之后就可以使用啦
先写一段简单的代码,可以看到没有释放内存。。。
1 #include<stdio.h>
2 #include<malloc.h>
3 int main()
4 {
5
6 int* ptr=(int*)malloc(sizeof(int)*10);
7 if(ptr==NULL)
8 return -1;
9 for(int i=0;i<10;i++)
10 ptr[i]=i+1;
11 //free(ptr);
12 //ptr=NULL;
13 return 0;
14 }
先进行编译,注意加-g选项,成为可调试版本。
查看内存命令:valgrind --tool = memcheck ./filename
从结果可以看出0次free,丢失了40字节。
当我们最后释放掉内存之后,再去检测。
可以看到1个free,所有的内存被释放,没有内存泄漏!