purify & memory leak

来源:互联网 发布:网络上赌博举报电话 编辑:程序博客网 时间:2024/06/03 18:10

程序代码中,内存错误包括两大类:内存访问错误,内存使用错误。

内存访问错误包括读内存错误,写内存错误。读内存错误可能使程序模块返回意想不到的结果,从而导致后续的程序模块运行异常。

内存使用错误主要指程序模块申请的内存没有正确释放,系统可用内存逐渐减少,使程序运行逐渐减慢,直至停止。


purify 主要检测以下内存错误:数组内存是否已经越界读/写,是否使用了未初始化的内存,是否对已释放的内存进行读/写,是否对空指针进行读/写,内存泄露等。


内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏


new会调用类的构造函数,“返回”的相应的类型 malloc只申请内存,返回的是void* delete只能和new配套使用 free只能与malloc(还有几个类似的函数)

Linux 下检查内存泄露

***静态分析工具 mtrace

1)在main.c代码中嵌入

#include <mcheck.h>

...

mtrace();

/*要检查是否有内存泄露的代码*/

muntrace();

2)编译运行

$gcc -o main main.c

$export MALLOC_TRACE=./log

//用环境变量定义一个文件log用于输出

$./main

$cat log


***动态分析

Valgrind 

Memwatch

Electric fence


0 0
原创粉丝点击