valgrind 检测C程序是否造成内存泄露.
2015-03-19 14:42
281 查看
常理说,既然你malloc了,就记得free.
但是,但是, 如果C的程序长长长的话, 在某个函数局部申请了一块堆上内存.传递出去, 用了很久, 很可能会随着指针使用的时间长度,而忘记这个指针指向的内存是否释放. 亦或会重复释放同一区域. 这都会造成内存泄露.
这里介绍一款神器(其实看 Expert C programming)的时候就看到有这东东了,但是一直都没怎么更加养成良好的代码检测习惯(大项目的经验和机会缺乏).
神器的官网.
http://valgrind.org/
只要运行 valgrind 后面跟上你想测试的C程序, 那么就可能利用valgrind
![](https://img-blog.csdn.net/20150319140857131)
我们来测试上面这个demo,就会发现这个程序内存泄露.而且,valgrind能够很准确的定位在程序代码的具体哪个位置发生了内存泄露.
![](https://img-blog.csdn.net/20150319142855946)
工具都是次要的, 良好的检查习惯, 以及编码习惯才是最重要的. 程序是人写的. 重点是要不断的提高个人素质.
但是,但是, 如果C的程序长长长的话, 在某个函数局部申请了一块堆上内存.传递出去, 用了很久, 很可能会随着指针使用的时间长度,而忘记这个指针指向的内存是否释放. 亦或会重复释放同一区域. 这都会造成内存泄露.
这里介绍一款神器(其实看 Expert C programming)的时候就看到有这东东了,但是一直都没怎么更加养成良好的代码检测习惯(大项目的经验和机会缺乏).
神器的官网.
http://valgrind.org/
只要运行 valgrind 后面跟上你想测试的C程序, 那么就可能利用valgrind
#include <stdio.h> int main() { int *p_mem = malloc(sizeof(int)*3); return 0; }
我们来测试上面这个demo,就会发现这个程序内存泄露.而且,valgrind能够很准确的定位在程序代码的具体哪个位置发生了内存泄露.
工具都是次要的, 良好的检查习惯, 以及编码习惯才是最重要的. 程序是人写的. 重点是要不断的提高个人素质.
相关文章推荐
- valgrind检测linux程序内存泄露
- 检测程序中是否存在内存泄露
- valgrind检测linux程序内存泄露
- 关于c++检测内存泄露相关知识(windows程序调试)
- 使用dmalloc&valgrind检测内存泄露
- 关于c++检测内存泄露相关知识(windows程序调试)
- 使用valgrind检测Android native程序的内存
- 关于c++检测内存泄露相关知识(windows程序调试)
- valgrind 使用 (linux程序内存检测)
- 关于c++检测内存泄露相关知识(windows程序调试)
- C/C++内存泄露检测工具 valgrind
- 关于c++检测内存泄露相关知识(windows程序调试)
- 关于C++检测内存泄露相关知识(Windows程序调试)
- Linux下用Valgrind检测内存泄露
- 内存泄露检测工具--valgrind
- 使用valgrind检测内存泄露的问题。
- 如何用 Valgrind 在 Linux 检测内存泄露
- 内存泄露检测工具 - Valgrind
- Ubuntu下使用valgrind检测内存泄露流程
- 如何检测非MFC程序的内存泄露?