Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482259
  • 博文数量: 135
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 1441
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-05 20:39
文章分类
文章存档

2012年(2)

2011年(130)

2009年(2)

2008年(1)

我的朋友

分类:

2011-08-11 15:03:30

文件: memwatch-2.71.tar.gz
大小: 42KB
下载: 下载
 


    Memwatch简介

    memwatch-2.71.tar.gz

    在三种检测工具当中,设置最简单的算是memwatch,和dmalloc一样,它能检测未释放的内存、同一段内存被释放多次、位址存取错误及不当使用未分配之内存区域。请往下载最新版本的Memwatch。

    安装及使用memwatch

    很幸运地,memwatch根本是不需要安装的,因为它只是一组C程序代码,只要在你程序中加入memwatch.h,编译时加上-DMEMWATCH -DMW_STDIO及memwatch.c就能使用memwatch,例如:

    gcc -DMEMWATCH -DMW_STDIO test.c memwatch.c -o test

     

    memwatch输出結果

    memwatch 的输出文件名称为memwatch.log,而且在程序执行期间,所有错误提示都会显示在stdout上,如果memwatch未能写入以上文件,它会尝试写入memwatchNN.log,而NN介于01至99之间,若它仍未能写入memwatchNN.log,则会放弃写入文件。

    我们引用第一篇(mtrace)中所使用过的有问题的代码:

        #include 

        #include 

        #include 

        #include 

        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中输入以下编译指令:

        gcc -DMEMWATCH -DMW_STDIO test.c memwatch.c -o test

    memwatch.log的內容如下:

        ============= MEMWATCH 2.71 Copyright (C) 1992-1999 Johan Lindh =============

     

        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中列出,本人强烈建议各位读者参考该文件。

    相关链接:

     

    -

     

    Pasted from <http://blog.chinaunix.net/u/17855/showart_373554.html>

     

阅读(1596) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~