memwatch
摘自:https://www.cnblogs.com/klcf0220/p/5962834.html
一、简介
memwatch可以跟踪程序中的内存泄漏和错误,能检测双重释放(double-free)、错误释放(erroneous free)、没有释放的内存(unfreed memory)、溢出(Overflow)、下溢(Underflow)等。
下载地址:
http://www.linkdata.se/sourcecode/memwatch/
解压后,得到源码 memwatch.c 和 memwatch.h
二、安装及使用
memwatch根本是不需要安装的,因为它只是一组C程序代码。需要做的是:
1、在代码中加入 memwatch.c 和 memwatch.h,一起编译、链接
2、编译时定义宏 DMEMWATCH、DMW_STDIO,即在编译程序时加上选项-DMEMWATCH -DMW_STDIO
三、例子
int main(int argc,char **argv) { int i = 0; char *p; mwInit(); //执行memwatch的初始化工作。虽然memwatch有在第一次使用时能够自动装载,但作者还是建议我们使用该函数。 p = malloc(100); p = malloc(200); free(p); for(i=0;i<5;i++) { p = malloc(50); if(p == NULL) { printf("can't malloc memory for test,num:%d\n",i); continue; } if((i%2) == 0) { free(p); p = NULL; } } mwTerm(); //执行memwatch的清除工作。当我们使用了mwInit()时,就必须使用该函数来终止memwatch的工作。 return 1; }
运行程序,会在当前目录生产memwatch.log文件,内容如下:
============= MEMWATCH 2.71 Copyright (C) 1992-1999 Johan Lindh ============= Started at Wed Mar 9 14:52:14 2016 Modes: __STDC__ 64-bit mwDWORD==(unsigned long) mwROUNDALLOC==8 sizeof(mwData)==32 mwDataSize==32 Stopped at Wed Mar 9 14:52:14 2016 unfreed: <9> ../main.c(26), 50 bytes at 0x855c3a0 {FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ................} unfreed: <6> ../main.c(26), 50 bytes at 0x855c268 {FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ................} unfreed: <1> ../main.c(20), 100 bytes at 0x855c1d0 {FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ................} Memory usage statistics (global): N)umber of allocations made: 7 L)argest memory usage : 300 T)otal of all alloc() calls: 550 U)nfreed bytes totals : 200 参考进行修改代码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)