Valgrind是运行在Linux上的一套基于仿真技术的程序调试和分析工具,作者是获得过Google-O’Reilly开源大奖的Julian Seward,它包含一个内核——一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务——调试,分析,测试等。 内存检测,使用它的Memcheck工具。
http://valgrind.org
sudo apt-get install valgrind
Memcheck用来检测C/C++程序中出现的内存问题,所有对内存的读写都会被检测到,一切malloc()/free()/new/delete的调用都会被捕获,所以,它能检测以下问题:
valgrind --tool=memcheck --leak-check=full --log-file=./log.txt ./YourProgram
Valgrind(memcheck)包含这7类错误
产生错误的代码:
#include <stdlib.h>
void f(void){
int *x = malloc(10*sizeof(int));
x[10] = 0;//越界访问
//内存没释放
}
int main(void){
f();
return 0;
}
编译:
gcc -g demo.c -o demo
检测:
valgrind --tool=memcheck --leak-check=full --log-file=./log.txt ./demo
查看错误: