参考网址:

(128条消息) 内存泄漏检查工具_comochris的博客-CSDN博客_内存泄露检测工具

(128条消息) valgrind简介与使用_WuYuJun’s blog的博客-CSDN博客_valgrind

(128条消息) 几种内存泄露检测工具的比较_cym64039的博客-CSDN博客

安装

1
2
3
4
5
6
7
8
# 下载(https://valgrind.org/downloads/current.html#current)
# https://sourceware.org/pub/valgrind/valkyrie-2.0.0.tar.bz2
# https://sourceware.org/pub/valgrind/valgrind-3.19.0.tar.bz2
wget https://sourceware.org/pub/valgrind/valgrind-3.19.0.tar.bz2
cd valgrind-3.19.0
./configure
sudo make
make install

简单使用:注意(gcc/g++都需要加上-g选项)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// valgrind_test.c
#include <stdio.h>
#include <stdlib.h>

void fun(void)
{
int *x = malloc(10*sizeof(int));
x [10] = 0; //问题1:堆块溢出
} //问题2:内存泄漏 - x未释放

int main(int argc, char **argv)
{
fun() ;
return 0 ;
}
1
2
gcc -g valgrind_test.c -o valgrind_test
valgrind --leak-check=yes ./valgrind_test

常见内存问题

具体参考

1
2
3
4
5
6
7
1. 动态内存泄露;
2. 资源泄露,比如文件指针不关闭;
3. 动态内存越界;
4.数组内存越界;
5.动态内存double free;
6.使用野指针,即未初始化的指针;
7.释放野指针,即未初始化的指针。