版权声明:本文为博主原创文章,转载注明出处。 https://blog.csdn.net/s_lisheng/article/details/79224934
Dr. Memory 是一个开源免费的内存检测工具,它能够及时发现内存相关的编程错误,比如未初始化访问、内存非法访问以及内存泄露等。与 Valgrind 类似,可以直接检查已经编译好的可执行文件。用户不用改写被检查程序的源代码,也无须重新链接第三方库文件,使用起来非常方便。
安装
在Linux下安装参考Installing on Linux.
使用示例
示例程序1:
#include <stdio.h>
int main(){
// 对空指针指向的内存区域写,会发生段错误
int *null_ptr = NULL;
*null_ptr = 10;
return 0;
}
编译程序,编译时添加-g
,以产生调试信息。使用drmemory -- <your program> args
进行检测。
示例程序2:
#include <stdlib.h>
void f(void) {
int* x = malloc(10 * sizeof(int));
x[10] = 0; // problem 1: heap block overrun
} // problem 2: memory leak -- x not freed
int main(void) {
f();
return 0;
}
运行后结果如下:
可以看到2个内存错误都检测到了。
更多选项可参考drmemory -help
。