purify & memory leak

本文详细介绍了程序代码中常见的内存错误类型,包括内存访问错误和内存使用错误,并通过实例展示了如何利用purify工具检测这些错误。同时,文章提供了在Linux环境下检查内存泄漏的方法,以及Valgrind、Memwatch和Electricfence等动态分析工具的使用教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值