MEMWATCH 调试动态库2

原创 2016年08月31日 12:05:34

下面是一个memwatch使用的例子:

1.

root@ubuntu:~/wanghuan/memwatch# cat test.c

#include
#include
#include "memwatch.h"
int main(void)
{
  char *ptr1;
  char *ptr2;
  ptr1 = malloc(512);
  ptr2 = malloc(512);
  ptr2 = ptr1;
  free(ptr2);
  free(ptr1);
}
2.

root@ubuntu:~/wanghuan/memwatch# cat Makefile
test:
 gcc -DMEMWATCH -DMEMWATCH_STDIO test.c memwatch.c -o test

3.

make 之后执行 ./test

root@ubuntu:~/wanghuan/memwatch# ./test
MEMWATCH detected 2 anomalies

查看 log内容:

4.

root@ubuntu:~/wanghuan/memwatch# cat memwatch.log

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

Started at Thu Feb 24 10:13:41 2011

Modes: __STDC__ 64-bit mwDWORD==(unsigned long)
mwROUNDALLOC==8 sizeof(mwData)==32 mwDataSize==32

double-free: <4> test.c(23), 0x8e444c8 was freed from test.c(22)

Stopped at Thu Feb 24 10:13:41 2011

unfreed: <2> test.c(20), 512 bytes at 0x8e44700   {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: 2
 L)argest memory usage      : 1024
 T)otal of all alloc() calls: 1024
 U)nfreed bytes totals      : 512

可以看出:

double-free: <4> test.c(23), 0x8e444c8 was freed from test.c(22):test.c的第23行内存双重释放。该内存在22行已被释放过。

unfreed: <2> test.c(20), 512 bytes at 0x8e44700  : test.c的第20行分配的内存没被释放。

最后是一个统计结果:

动态分配了两次内存。一共分配了1024,未释放512.

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(248) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
评论热议
版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

MEMWATCH 调试动态库1

MEMWATCH 由 Johan Lindh 编写,是一个开放源代码 C 语言内存错误检测工具,您可以自己下载它(请参阅本文后面部分的参考资料)。只要在代码中添加一个头文件并在 gcc 语句中定义了 ...

MasterCAM V9.1 SP2 MR0304 动态库

  • 2015年05月14日 01:17
  • 531KB
  • 下载

动态库导出静态库工具(dll2lib.exe)

  • 2011年07月28日 09:35
  • 568KB
  • 下载

ceph存储 dmesg和addr2line分析bug以及so动态库崩溃示例

Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。这种功能对于将跟踪地址转换成更有意义的内容来说简直...
  • skdkjxy
  • skdkjxy
  • 2016年10月14日 19:14
  • 627

DB2.net动态库

  • 2011年12月06日 09:42
  • 32KB
  • 下载

android 编译mp4v2 2.0.0生成动态库

最近要录制h264+aac的mp4视频,使用mp4v2来实现,下面就是编译的方法 1、下载源码,到官网http://code.google.com/p/mp4v2/downloads/list 下载...

tinyxml_2_6_2 库(动态库和静态库)

  • 2016年04月21日 10:59
  • 854KB
  • 下载

Android增量更新(二)-差分文件(Windows-part2)-dll动态库和jar包

上一篇博客《Android增量更新(一)-差分文件(Windows-part1)》中,已经通过VS把bsdiff源码编译成了.exe的可执行文件,为了更好地给第三方语言调用,现在准备把bsdiff编译...
  • ywl5320
  • ywl5320
  • 2017年10月23日 23:12
  • 164
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MEMWATCH 调试动态库2
举报原因:
原因补充:

(最多只允许输入30个字)