zoukankan      html  css  js  c++  java
  • memwatch

    一、简介

    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 ",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

  • 相关阅读:
    LeetCode
    在linux服务器下部署python工程(爬虫)
    linux安装python3.6 及 beautifulsoup
    HDU 1561 The more, The Better[树形dp/01背包]
    POJ 3107 Godfather[树的重心]
    POJ 1655 Balancing Act[树的重心/树形dp]
    HDU 2169 Computer[树形dp]
    HDU
    POJ1721--CARDS [置换]
    POJ 1026 Cipher[置换]
  • 原文地址:https://www.cnblogs.com/klcf0220/p/5962834.html
Copyright © 2011-2022 走看看