【RT-Thread学习笔记】用memwatch排除内存泄露

本文将向您展示如何使用一个小型开源组件[memwatch]来检查可能存在[内存泄漏]的代码。
之前的测试代码包括一些内存操作错误:
//main . c # include # include # include # include memwatch.h //包含头文件静态void signal _ handler(int sign _ no){ printf(捕获信号编号:% d \ n ,sign _ no)由memwatch提供;退出(-1);} int memory _ leak _ test(void){ char * p、*p1、* p2=NULLp=malloc(100);//应用程序空间if (p) {strcpy(p,123456');} P1=malloc(5);//应用程序空间if (p1) {strcpy(p1,123456');}//免费(p);//使用后有意不释放//free(P1);//使用后故意不释放* p2=5'//访问空指针,导致段缺省(核心转储),memwatch可以坚持返回0;}int main(int arc,const char * argv[]){ signal(SIGSEGV,signal _ handler);printf(这是一个memwatch检测内存泄漏的例子!\ n );memory_leak_test()。返回0;}然后把memwatch、memwatch.c、memwatch.h的源代码放在main.c的目录下,一起参与编译,如下图:
通过makefile或其他编译方法将上述文件编译成可执行文件,然后运行并观察运行结果,如下:
从图中我们可以知道memwatch在main.c中检测到了内存操作的错误,另外除了运行输出错误信息外,还会生成一个memwatch.log文件,从中可以详细了解内存错误的类型和具体位置。如下图:
//mem watch . log===========mem watch 2.71版权所有(C)1992-1999 Johan Lindh================开始于2019年3月7日周四09:05:35模式:_STDC__ 64位MWD word===(unsigned int)mwROUNDALLOC==8 sizeof(mwData)==56 mwDataSize==56停止于2019年3月7日周四09:05:35未被释放:SRD...12345 }未释放:src/main.c(20),100字节,在0xe 66720 { 31 32 33 34 35 36 00 FE FE FE FE FE FE FE 123456..}内存使用统计(全局):N)分配次数:2 L)最大内存使用次数:105T)all alloc()调用总数:105 U) NFReed Bytes总数:105这样我们就可以根据反馈的问题点明确修改相应的内存操作bug。方便实用吗?
当然,这个例子只是一个简单的演示。在实际项目中,可能会出现更多的隐藏内存操作问题。灵活使用memwatch检查内存问题,一定会事半功倍。
最后附上整个测试项目的文档,包括源代码和makefile,供大家参考。如发现问题,请在留言区评论,我会及时跟进回复。谢谢你。
演示项目下载链接:mem watch _ for _ memory _ leak _ detect.tar.gz
审计唐子红
推荐阅读
- alfa romeo车标含义?(阿尔法罗密欧车标)
- 华为鸿蒙os如何操作 华为鸿蒙os2.0系统官网报名入口
- 14款沃尔沃s60l二手车能买吗?(沃尔沃s60为什么贬值厉害)
- power mp3 wma converter(mp3格式转换器)软件介绍(power mp3 wma converter(mp3格式转换器))
- 42岁李贞贤宣布平安生女,网友:歌声击退山贼的那个
- 热火朝天的高铁WiFi迟迟未到(5G能否破局)
- 华为手机性价比最高是哪几款2022? 华为哪款手机性价比高最值得入手
- 进口捷豹全部车型报价?(捷豹报价大全价格表)
- 韩庚江铠同疑相恋,两人同游马尔代夫遭曝光
- 八卦格字帖软件介绍(八卦格字帖)
- 虚拟机 操作系统(操作系统整合:虚拟机管理程序的下一步)
- 比亚迪f6参数配置?(比亚迪f6)
- 奥沙利文获世锦冠军,奥沙利文得了几次世锦赛冠军
- Evel Knievel手游游戏介绍(Evel Knievel手游)
- 索尼wi1000x拆解(SONYNZW-X1000系列高清拆解图集)
- 4座硬顶敞篷跑车都有哪几款?(4门4座硬顶敞篷车推荐)
- 艺术体操团体全能决赛,艺术体操团体全能决赛中国
- 工人物语6通用修改器游戏介绍(工人物语6通用修改器)
- 简述电机换向器的工作原理图(简述电机换向器的工作原理)
- Atheros-AR5007EG无线网卡驱动软件介绍(Atheros-AR5007EG无线网卡驱动)
