memwatch

memwatch一、简介memwatch可以跟踪程序中的内存泄漏和错误,能检测双重释放(double-free)、错误释放(erroneousfree)、没有释放的内存(unfreedmemory)、溢出(Ov

大家好,又见面了,我是你们的朋友全栈君。

一、简介

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154417.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python 实现 跳一跳游戏 代码解析

    python 实现 跳一跳游戏 代码解析这个代码实现的是手动点击起点和终点,程序自动判断距离、触屏时间完成跳跃原理(摘自项目说明页面):1.将手机点击到“跳一跳”小程序界面;2.用Adb工具获取当前手机截图,并用adb将截

    2022年7月6日
    39
  • php安装

    php安装

    2021年6月17日
    88
  • idea创建java项目_使用IDEA创建java项目(hello word)

    idea创建java项目_使用IDEA创建java项目(hello word)前提:已安装好jdk,配置好环境变量。我使用的是java8首先在自己的D盘下建一个文件夹,用来存放我们待会新建的项目,我创建了IdeaProject:1,第一步打开idea2,第二步选择创建java项目,并选择自己的jdk(我自己本地已经配置了所以有),没有可以点击new去自己的安装目录下找,一般默认安装C:\ProgramFiles\Java,然后选择next下一步3,第三步将“Creat…

    2022年7月9日
    59
  • ubuntu安装vscode的两种方法

    ubuntu安装vscode的两种方法方法一:依次输入如下命令1、sudoadd-apt-repositoryppa:ubuntu-desktop/ubuntu-make2、sudoapt-getupdate3、sudoapt-getinstallubuntu-make4、umakeidevisual-studio-code提示输入a即可方法二:在windows系统下载安装包,再使用共享文件夹…

    2022年9月18日
    4
  • mac上的VSCode快捷键

    mac上的VSCode快捷键Command+Shift+N打开新窗口Command+Shift+P/F1显示命令面板Command+\编辑器分屏Command+N新建文件Command+O打开文件command+,打开用户设置shift+option+F格式化代码Command+U撤销上一个光标操作Command+B显示、隐藏侧边栏Command+Shift+F显示搜索框Ctrl+Shift+G显示Git面板Command+

    2022年5月13日
    77
  • WinRAR去广告方法

    WinRAR去广告方法首先简单说下怎么注册WinRAR。 复制下列文本到txt文本文档,制作一个rarreg.key文件。 RARregistrationdata FederalAgencyforEducation 1000000PCusagelicense UID=b621cca9a84bc5deffbf 6412612250ffbf533df6db2dfe8ccc3aae5362c06d54762105357d 5e3b1489e751c76bf6e0640001014…

    2022年6月14日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号