Linux C 编程内存泄露检测工具(二):memwatch
Memwatch简介
在三种检测工具当中,设置最简单的算是memwatch,和dmalloc一样,它能检测未释放的内存、同一段内存被释放多次、位址存取错误及不当使用未分配之内存区域。请往http://www.linkdata.se/sourcecode.html下载最新版本的Memwatch。
安装及使用memwatch
很幸运地,memwatch根本是不需要安装的,因为它只是一组C程序代码,只要在你程序中加入memwatch.h,编译时加上-DMEMWATCH -DMW_STDIO及memwatch.c就能使用memwatch,例如:
memwatch输出結果
memwatch的输出文件名称为memwatch.log,而且在程序执行期间,所有错误提示都会显示在stdout上,如果memwatch未能写入以上文件,它会尝试写入memwatchNN.log,而NN介于01至99之间,若它仍未能写入memwatchNN.log,则会放弃写入文件。
我们引用第一篇(mtrace)中所使用过的有问题的代码:
#include <stdlib.h>
#include <errno.h>
#include <memwatch.h>
int main() {
char *hello;
setenv("MALLOC_TRACE", "output", 1);
mtrace();
if ((hello = (char *) malloc(sizeof(char))) == NULL) {
perror("Cannot allocate memory.");
return -1;
}
return 0;
}
然后在shell中输入以下编译指令:
memwatch.log的內容如下:
Started at Sat Jun 26 22:48:47 2004
Modes: __STDC__ 32-bit mwDWORD==(unsigned long)
mwROUNDALLOC==4 sizeof(mwData)==32 mwDataSize==32
Stopped at Sat Jun 26 22:48:47 2004
unfreed: <1> test.c(9), 1 bytes at 0x805108c {FE .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .}
Memory usage statistics (global):
N)umber of allocations made: 1
L)argest memory usage : 1
T)otal of all alloc() calls: 1
U)nfreed bytes totals : 1
文件指出,在test.c被执行到第9行时所分配的内存仍未被释放,该段内存的大小为1 byte。
Memwatch使用注意
Memwatch的优点是无需特別配置,不需安装便能使用,但缺点是它会拖慢程序的运行速度,尤其是释放内存时它会作大量检查。但它比mtrace和dmalloc多了 一项功能,就是能模拟系统内存不足的情況,使用者只需用mwLimit(long num_of_byte)函数来限制程式的heap memory大小(以byte单位)。
最详细的使用说明(包括优点缺点,运行原理等)已在README中列出,本人强烈建议各位读者参考该文件。
相关链接:
- Memwatch下载
Linux C 编程内存泄露检测工具(二):memwatch相关推荐
- Linux内核态内存泄露检测工具——Kmemleak
我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1 ...
- 几种内存泄露检测工具的比较
概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的.复杂的应用程序中,内存泄漏是常见的问题.当以前分配的一片内存不再需要使用或无法访问时,但是却 ...
- Ubuntu下内存泄露检测工具Valgrind的使用
在VS中可以用VLD检测是否有内存泄露,可以参考http://blog.csdn.net/fengbingchun/article/details/44195959,下面介绍下Ubuntu中内存泄露检 ...
- Linux环境下内存泄露检测
linux下内存泄漏检测工具valgrind 该工具可以检测下列与内存相关的问题 : 未释放内存的使用 对释放后内存的读/写 对已分配内存块尾部的读/写 内存泄露 不匹配的使用malloc/new/n ...
- 精准 iOS 内存泄露检测工具
MLeaksFinder:精准 iOS 内存泄露检测工具 发表于 2016-02-22 | zepo | 23 Comments 背景 平常我们都会用 Instrument 的 Lea ...
- Visual Studio内存泄露检测工具
使用简介 在写程序的过程中,难免会遇到内存泄露的时候,这个时候如果手工查找内存泄露,不说方法没有通用的,就是真的要自己手工查找也是很耗时间和精力的.诚然,我们可以借助一些工具,而且我们还会惊奇地发现这 ...
- Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发
Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发 Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构 ...
- linux 内存泄露检测工具——valgrind
valgrind是linux下一个可用调试.查看内存泄露的工具,其官方网站:http://www.valgrind.org/ 使用时可用命令: valgrind -v --leak-check=fu ...
- 内存泄露检测工具比较
From: http://blog.163.com/zhuang_qianxin/blog/static/29765138201051092529107/ 1. ccmalloc-Linux和 ...
最新文章
- 修改shape数据 小数位数_【数据管理】Excel实用精华
- 软件构造学习笔记-第十四周、十五周
- [css] 移动端页面不满一屏时如何实现满屏背景?
- 使用正则把数字前面的符号替换_正则表达式(一) 基本表达式
- 柔性体没有应变_边坡防护终结篇!柔性防护系统(主被动网)知识总结!
- Make GNN Great Again: GNN 上的预训练和自监督学习
- 原来你是这样的JAVA[01]-基础一瞥
- python菜鸟教程网-Python JSON
- PR转场预设 放大特效带有重影效果的PR视频转场预设
- hello world你知多少------300种编程语言中的hello world程序汇
- 《百度中小学人工智能课程》预计9月进课堂;AI医疗市场未来营收规模或达万亿以上...
- 《唐诗三百首》中的童年记录
- ABP理论学习之实体类
- centos7.9-kvm-ESXi相关操作
- 006_STM32程序移植之_SYN6288语音模块
- linux下repo是什么文件夹,yum的repo文件详解、以及epel简介、yum源的更换
- 使用电脑浏览器获取狗东账号cookie
- Java运行环境—jdk下载及安装步骤
- 中国传感器制造行业发展动态与前景趋势分析报告2022-2028年
- 单招计算机专业的自我介绍,软件技术单招面试自我介绍
热门文章
- 开发多商家商城系统的功能优势
- clr 面试_C# 常见面试问题汇总
- “富贵树”身价十五万,湖南小伙返乡创业,一年卖出800多万
- CTF中编码与加解密总结
- CDH5.15离线搭建简易版集群(完整版)
- python for x in range(0,10) 例如使用python打印9*9乘法表
- 电脑游戏业编年史之十二──叛逆
- Python_tkinter(标签Lebal)
- 2016北京集训测试赛(九)Problem C: 狂飙突进的幻想乡
- 函数概念与特性——反函数、复合函数