一、简介

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

参考进行修改代码。

参考链接:http://blog.csdn.net/xkdcc/article/details/1270155

http://blog.csdn.net/zy799894671/article/details/25210503

memwatch的更多相关文章

  1. memwatch内存泄露检测工具

    工具介绍 官网 http://www.linkdata.se/sourcecode/memwatch/ 其功能如下官网介绍,挑选重点整理: 1. 号称功能: 内存泄露检测 (检测未释放内存, 即 动态 ...

  2. 【转】 memwatch使用说明书

    memwatch使用说明书 1.memwatch是什么?    memwatch是C语言的内存检测器.除了检测内存的功能外,它同样可以做其它的一些事情,而我们主要还是在于讲述它的基本功能.如果你真的想 ...

  3. Linux内存调试工具初探-MEMWATCH

    C 语言作为 Linux 系统上标准的编程语言给予了我们对动态内存分配很大的控制权.这种自由可能会导致严重的内存管理问题,可能导致程序崩溃或随时间的推移导致性能降级. 内存泄漏(即 malloc()  ...

  4. memwatch的使用

    博主的新Blog地址:http://www.brantchen.com 欢迎訪问:) linux下的測试工具真是少之又少,还不好用,近期试用了memwatch,感觉网上的介绍不太好,所以放在这里跟大家 ...

  5. Linux C 编程内存泄露检測工具(二):memwatch

    Memwatch简单介绍 在三种检測工具其中,设置最简单的算是memwatch,和dmalloc一样,它能检測未释放的内存.同一段内存被释放多次.位址存取错误及不当使用未分配之内存区域.请往http: ...

  6. Linux内存调试工具初探-MEMWATCH(转)

    C 语言作为 Linux 系统上标准的编程语言给予了我们对动态内存分配很大的控制权.这种自由可能会导致严重的内存管理问题,可能导致程序崩溃或随时间的推移导致性能降级. 内存泄漏(即 malloc()  ...

  7. vld,Bounds Checker,memwatch,mtrace,valgrind,debug_new几种内存泄露检测工具的比较,Valgrind Cheatsheet

    概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的.复杂的应用程序中,内存泄漏是常见的问题.当以前分配的一片内存不再需要使用或无法访问时,但是却 ...

  8. linux 下C语言学习路线

    UNIX/Linux下C语言的学习路线.一.工具篇“公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工 ...

  9. Linux下调试程序方法

    您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序.本文描述了几种可以用来调试在 Linux 上运行的程序的方法.我们将回顾四种调试问 ...

随机推荐

  1. leetcode 99 Recover Binary Search Tree ----- java

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

  2. Codeforces Round #112 (Div. 2)

    Codeforces Round #112 (Div. 2) C. Another Problem on Strings 题意 给一个01字符串,求包含\(k\)个1的子串个数. 思路 统计字符1的位 ...

  3. POJ2391 Ombrophobic Bovines(网络流)(拆点)

                         Ombrophobic Bovines Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

  4. 配置DNS

    1.将DNS解析服务器添加到:/etc/resolv.conf 2.打开DNS相关配置:sed -i 's/^hosts:[ \t]*files[ \t]*$/& dns/' /etc/nss ...

  5. wamp2.4允许局域网访问,如Android模拟器和手机

    Apache 从2.2升级到 Apache2.4.x 后配置文件 httpd.conf 的设置方法有了大变化,以前是将 deny from all 全部改成 Allow from all 实现外网访问 ...

  6. C++ Language

    C++ Language Reference https://msdn.microsoft.com/en-us/library/3bstk3k5(v=vs.120).aspx

  7. C# Post方式传输报文,和处理响应

    public string DoPost(string url, string data) { HttpWebRequest req = GetWebRequest(url, "POST&q ...

  8. 遇到EDIUS视频条全变灰色编辑不了如何处理

    上次使用EDIUS编辑完的视频,这次再打开时,原素材都还能用,时间线上的视音频却都呈灰色不可编辑状态,要怎么办呢?别慌,小编来告诉你解决视频条全变灰色EDIUS不可编辑的办法. 下图就是视频全变灰色E ...

  9. 使用JavaScript实现一个倒数计时程序

    使用JavaScript在网页中实现一个计算当年还剩多少时间的倒数计时程序,网页上能够实时动态显示“XX年还剩XX天XX时XX分XX秒”: 程序代码如下: <meta charset=" ...

  10. 2.Nexus更新索引

    1.手动更新1.  下载索引文件在http://repo.maven.apache.org/maven2/.index/ 中下载nexus-maven-repository-index.gznexus ...