ubuntu安装valgrind,并进行简单程序的检查内存泄漏

菜鸡模仿之路总是不那么顺利

1。首先官网http://valgrind.org/下载valgrind,解压

2。进入目录后  ./autogen.sh 好吧,我的电脑在这里就报错了

 

  1. Can't exec "aclocal": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 326.
  2. autoreconf: failed to run aclocal: No such file or director

 

3。百度要装一个sudo apt-get install automake

4。然后.配置Valgrind,生成MakeFile文件 ,教程是这么写的./configure --prefix=/usr/local   这里我并没有指定文件位置,就安在的当前目录下,若要指定在usr/local下还是要加sudo的

5。然后编译make && make install   这里建议还是加上sudo的,而且最好还是编译和安装分开执行

sudo make -j8 

sudo make install -j8

这里还是加一下-j8吧,不然太慢了,加了还是有点慢

 

6.然后一开始由于制定了生成makefile文件的位置,导致因为没有权限编译了一遍,建议重新编译安装的时候还是sudo make clean一下恩

7。安装成功了,然后来验证一下,菜鸡采用官网快速开始的例子

8。在本地复制了quick start的一个了leak.c的代码

  #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;
  }

 9。然后gcc -o leak leak.c    gcc -o用来编译生成二进制文件

然后可以运行一下 ./leak

10。然后使用valgrind进行检测一下是否有内存泄露

 valgrind --leak-check=yes ./leak

使用方式:

If you normally run your program like this:

  myprog arg1 arg2

Use this command line:

  valgrind --leak-check=yes myprog arg1 arg2

就酱紫

最后成功图:

这个代码共有两个内存泄露的地方一个malloc,另一个数组越界。

 

posted @ 2019-07-09 14:38  pjc的乖宝宝  阅读(1574)  评论(0编辑  收藏  举报