zoukankan      html  css  js  c++  java
  • 内存泄漏工具VLD

    内存泄漏问题常常让人十分头痛,解决起来又十分的困难,发现有同事使用的VLD,于是在网上略查了一下其使用方法

     

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

    一.        VLD工具概述

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

    二.        VLD下载

    http://vld.codeplex.com/releases

    三.        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拷贝到你的程序的运行目录下。就完成安装了。

    四.        VLD使用

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

    1. 加入头文件: 

    2.      编译: 

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

    内存泄露所在的位置

    4.查看VC输出信息:

     "WARNING: Visual Leak Detector detected meory leaks!"

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

          "No memory leaks detected"

      

    五.        附录

    1.测试用文件

    #include "vld.h"

     

    #include "iostream.h"

    #include "stdio.h"

    #include "stdlib.h"

    #include "string.h"

     

    void Function1(char *p)

    {

           char *pTmp = new char[255];

           memset(pTmp, 0x0, 255);

           strncpy(pTmp, p, 255);

           //delete pTmp;

    }

     

    int Function2(void)

    {

           char acString[] = "this is test!";

           Function1(acString);

           return 1;

    }

     

    void Function3(void)

    {

           Function2();

    }

    int main(void)

    {

           cout << "begin.............." << endl;

     

           Function3();

           cout << "end................" << endl;

           return 1;

    }

     

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

     

  • 相关阅读:
    webpack4.x相关笔记整理
    vue原理探索--响应式系统
    git常用命令备忘
    小程序开发知识点及坑点总结
    无异常日志,就不能排查问题了???
    【从单体架构到分布式架构】(三)请求增多,单点变集群(2):Nginx
    【从单体架构到分布式架构】(二)请求增多,单点变集群(1):负载均衡
    【从单体架构到分布式架构】(一)万丈高楼平地起:环境准备
    一个接口查询关联了十几张表,响应速度太慢?那就提前把它们整合到一起
    docker基础:容器操作命令
  • 原文地址:https://www.cnblogs.com/ice-arrow/p/13596226.html
Copyright © 2011-2022 走看看