Linux C编程内存泄漏工具:memwatch的使用

1.首先你需要下载它,在http://www.linkdata.se/sourcecode/memwatch/

2.该内存工具是开源的(我也很喜欢开源^_^...),无需安装,只要在你的代码中包含它的头文件.像这样 #include "memwatch"

3.目前用到的最新版本是memwatch-2.71.tar.gz

4.解压 tar -xvf memwatch-2.71.tar.gz

5.在解压文件中将memwatch.c和memwatch.h拷贝到你的程序目录中

6.测试文件中包含testmem.c , memwatch.c, memwatch.h

7.测试代码:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <errno.h>
 4 #include "memwatch.h"
 5 int main()
 6 {
 7         char *hello;
 8         setenv("MALLOC_TRACE","output",1);
 9         mtrace();
10         if((hello = (char *)malloc(sizeof(char))) == NULL)
11         {
12                 perror("Cannot allocate memory");
13                 return -1;
14         }
15         return 0;
16 }

8.测试命令:

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

9.运行 ./testmem

10.生成memwatch.log,并查看cat memwatch.log

至于什么样的原理,大家可以读读里面的源代码和README文件

时间: 2024-10-28 15:32:51

Linux C编程内存泄漏工具:memwatch的使用的相关文章

linux实用技巧:检测内存泄漏工具Valgrind

1.Valgrind简介 1.在我们编写C/C++的时候,最常见的错误之一就是内存泄露,这样的问题其实跟程序员的编程习惯密不可分.如果你在申请内存空间之后能够马上在合适的位置释放内存.会极大程度的避免内存泄漏的情况.但是人非圣贤,孰能无过.有时候我们确实忘记释放内存而导致了比较严重的错误,所以这个时候我们需要借助valgrind这个工具来判断内存泄漏. Valgrind 是一款 Linux下(支持 x86.x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(

【调试】Linux下超强内存检测工具Valgrind

[调试]Linux下超强内存检测工具Valgrind 内容简介 Valgrind是什么? Valgrind的使用 Valgrind详细教程 1. Valgrind是什么? Valgrind是一套Linux下,开放源代码(GPLV2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核的其他调试工具组成. 内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具:而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务.

VS2015 定位内存泄漏工具vld

介绍一款在vs2015开发环境定位内存泄漏工具:Visual Leak Detector ,具体的使用方法如下: 1.  安装vld-2.5-setup.exe (下载链接地址后面会给出),安装过程会出现以下界面,所以复选框均 选中. 图1 vld安装显示界面 2. 利用 vs2015新建一个控制台程序,代码如下图所示: 图2 示例代码片段 如图2所示,只要将vld头文件引入到工程即可.vld.路径以及vld动态库VS2015可自动找到,不需要指定路径. 程序运行的结果如图3所示: 原文地址:h

Linux下内存泄漏工具

原文链接:http://www.cnblogs.com/guochaoxxl/p/6970090.html 概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的.复杂的应用程序中,内存泄漏是常见的问题.当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,这时就出现了内存泄漏.尽管优秀的编程实践可以确保最少的泄漏,但是根据经验,当使用大量的函数对相同的内存块进行处理时,很可能会出现内存泄漏. 内存泄露可以分为以下几类: 1. 常发

Linux C/C++内存泄漏检测工具:Valgrind

Valgrind 是一款 Linux下(支持 x86.x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(C语言中的malloc和free,以及C++中的new和delete),找出内存泄漏问题. Valgrind 中包含的 Memcheck 工具可以检查以下的程序错误: 使用未初始化的内存 (Use of uninitialised memory) 使用已经释放了的内存 (Reading/writing memory after it has been f

linux c程序内存泄漏检测工具-mtrace工具介绍

笔者也是最近去面试被问到怎么做内存泄漏检查,之前都是靠人工屏蔽代码.或者PC-link/KW一类的检查工具进行检查,回来后搜索了下,才知道linux自带的就有mtrace工具. 具体操作步骤如下: 1.在linux下创建test.c文件,编写如下代码: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 #include <mcheck.h> 6 7 8 int main(

如何在linux下检测内存泄漏(转)

本文转自:http://www.ibm.com/developerworks/cn/linux/l-mleak/ 本文针对 linux 下的 C++ 程序的内存泄漏的检测方法及其实现进行探讨.其中包括 C++ 中的 new 和 delete 的基本原理,内存检测子系统的实现原理和具体方法,以及内存泄漏检测的高级话题.作为内存检测子系统实现的一部分,提供了一个具有更好的使用特性的互斥体(Mutex)类. 1.开发背景 在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程

Valgrind 内存泄漏工具

Valgrind 是一款 Linux下(支持 x86.x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(C语言中的malloc和free,以及C++中的new和delete),找出内存泄漏问题. Valgrind 中包含的 Memcheck 工具可以检查以下的程序错误: 使用未初始化的内存 (Use of uninitialised memory) 使用已经释放了的内存 (Reading/writing memory after it has been f

Visual Leak Detector内存泄漏工具

Visual Leak Detector我们常用的C/C++内存泄露检查工具,同样在VS编译工具下都能使用该工具.不过在不同的版本上,设置有所不同.Visual Studio 2010下工作良好需要2.2版本及以上.最新版本我们可以在Codeplex.com上面下载.下载链接:http://vld.codeplex.com/ 设置步骤: 1.打开连接,我们选择下载最新的稳定版本vld-2.3-setup.exe 2.运行vld-2.3-setup.exe,按提示完成安装,记住安装的路径,在这我将