内存检测工具valgrind安装及测试
来源:互联网 发布:铁路定额预算软件 编辑:程序博客网 时间:2024/06/08 14:33
本文转自:peter tang
最近在学习数据结构的时候总是遇到关于内存错误的问题,因为数据结构这块多用指针,由此产生的段错误多不胜数,因此学习了一下valgrind这个工具,来检测我们的程序是如何出现内存问题的。
centos系统下的valgrind,首先我们得有autoconf和automake两个工具,一般系统都会自配。
安装过程:
wget http://valgrind.org/downloads/valgrind-3.10.1.tar.bz2tar -jxvf valgrind-3.10.1.tar.bz2cd valgrind-3.10.1./autogen.sh (这一步可能遇上没有安装上面两个工具的错误提示)./configuresudo make && make installvalgrind --version (检测版本,看是否安装成功)
到此,我们的工具安装成功。
我们在编译程序的时候加上-g -fno-inline 保留调试信息。
测试命令:
$ valgrind --tool=memcheck --log-file=/home/yangni/var_log --leak-check=full --error-limit=no --show-leak-kinds=all ./a.out
–leak-check=full 指的是完全检查内存泄漏。
–show-reachable=yes是显示内存泄漏的地点。
–trace-children=yes:跟入子进程
–track-origins=yes:查看哪里没有进行初始化。当程序正常退出的时候valgrind自然会输出内存泄漏的信息。
–log-file= 是存放详细信息的日志文件,我们将其显示在终端可不要。/home/yangni/var_log 是我重定义的输出路径。
接下来用一个小程序测试一下:
#include <stdio.h>void function(){ int *p = (int*)malloc(10*sizeof(int)); p[10] = 0;}int main(){ function(); return 0;}
上面的程序很明显没有free而造成内存泄漏,内存泄露(Memory leak)指的是,在程序中动态申请的内存,在使用完后既没有free,又无法被程序的其他部分访问。内存泄露是在开发大型程序中最令人头疼的问题,以至于有 人说,内存泄露是无法避免的。其实不然,防止内存泄露要从良好的编程习惯做起,另外,有工具帮助我们检测更好!
#include <stdio.h>int main(){ int a; if (a==1) { printf("a==%d\n",a); return 0; }}
#include <stdio.h>int main(){ int *a = (int*)malloc(5*sizeof(int)); a[5] = 1; return 0;}
- 内存检测工具valgrind安装及测试
- Ubuntu 内存泄漏检测工具Valgrind的安装
- Ubuntu 内存泄漏检测工具Valgrind的安装
- valgrind内存检测工具
- valgrind ---- 内存检测工具
- 内存检测工具Valgrind
- 内存检测工具 Valgrind
- 内存泄露检测工具 - Valgrind
- 内存泄露检测工具--valgrind
- valgrind内存检测工具
- 内存泄露检测工具 - Valgrind
- valgrind内存检测工具
- 内存泄露检测工具valgrind
- Valgrind 内存检测工具
- valgrind 内存检测工具用法
- valgrind内存检测工具
- 内存检测工具valgrind
- 【测试工具】Android内存检测工具DDMS安装及使用
- 由中印对峙和九寨沟地震,以一个程序员的视角来看未来战争
- 前缀和与差分
- 660. Remove 9
- 信号量和信号的处理
- 八种常用的排序算法
- 内存检测工具valgrind安装及测试
- react-app-loading
- 2017-08-14 每日一记 Excel中数字变为文本
- 595. Big Countries
- JUnit(>4.0)@BeforeClass、@Before、@Test、@After、@AfterClass、@Ignore (2012-10-27 10:13:41)
- 上海百度面试
- 文档排序--相似度模型--VSM
- CodeForces
- 云计算NA1