• Visual C++内存泄露检测—VLD工具使用说明 .


    1.VLD工具概述

      Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。

    2.VLD下载

      http://www.codeproject.com/tools/visualleakdetector.asp

      本文后附有vld1.0的工具包,下载解包后就可使用。

    3.VLD安装

    方法一:

      解压之后得到vld.h, vldapi.h, vld.lib, vldmt.lib, vldmtdll.lib, dbghelp.dll等文件。将.h文件拷贝到Visual C++的默认include目录下,将.lib文件拷贝到Visual C++的默认lib目录下,将dbghelp.dll拷贝到你的程序的运行目录下,便安装完成了

    方法二:

      解压之后得到vld.h, vldapi.h, vld.lib, vldmt.lib, vldmtdll.lib, dbghelp.dll等文件。将.h文件和.lib文件拷贝到你要检测的工程文件所在的目录里(只针对此工程),将dbghelp.dll拷贝到你的程序的运行目录下。就完成安装了。

    4.VLD使用

      在包含入口函数的.cpp文件中包含vld.h就可以了。下面以一个例子进行说明(源程序见附录):

    4.1 加入头文件

    4.2 编译

    4.3 在debug方式下运行:查看VC的输出信息

    内存泄露所在的位置

    4.4 查看VC输出信息

       "WARNING: Visual Leak Detector detected meory leaks!"

    4.5 如果没有内存泄露,此输出的信息为

          "No memory leaks detected"

    5.附录

    5.1 测试用文件

     1 #include "vld.h"
     2 #include "iostream.h"
     3 #include "stdio.h"
     4 #include "stdlib.h"
     5 #include "string.h"
     6 
     7 void Function1(char *p)
     8 
     9 {
    10        char *pTmp = new char[255];
    11        memset(pTmp, 0x0, 255);
    12        strncpy(pTmp, p, 255);
    13        //delete pTmp;
    14 }
    15 
    16 int Function2(void)
    17 {
    18        char acString[] = "this is test!";
    19        Function1(acString);
    20 
    21        return 1;
    22 }
    23 
    24 void Function3(void)
    25 {
    26        Function2();
    27 }
    28 
    29 int main(void)
    30 {
    31        cout << "begin.............." << endl;
    32        Function3();
    33        cout << "end................" << endl;
    34        return 1;
    35 }
    View Code

    5.2 Vld1.0工具包

    5.3 关于linux的内存泄露,可以使用valgrind工具进行检测

  • 相关阅读:
    常见面试题1
    勒索病毒防范方法
    VMware虚拟机打开后不兼容
    win10桌面显示我的电脑设置
    scala集合和Java集合对应转换操作
    scala中使用redis
    爬虫调研
    hadoop命令
    IDEA打jar包
    spark.mllib
  • 原文地址:https://www.cnblogs.com/blueoverflow/p/4875866.html
Copyright © 2020-2023  润新知