• 使用Visual Leak Detector for Visual C++ 捕捉内存泄露


    1、下载vlc

    http://vld.codeplex.com/

    2、创建应用并配置

    c/c++ -> General -> Additional Include Directories = C:\Program Files (x86)\Visual Leak Detector\include

    Linker -> General -> Additional Library Directories = C:\Program Files (x86)\Visual Leak Detector\lib\Win32

    3、捕捉内在泄露

    #include "stdafx.h"
    
    #ifdef _DEBUG   
    #include "vld.h"
    #endif
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        char* c1 = new char[100];
        char* c2  =(char*)malloc(200);
        char c3[1000];
    
        //delete[] c1;
        //free(c2);
    
        return 0;
    }

    输入如下:

    Visual Leak Detector Version 2.2.3 installed.
    WARNING: Visual Leak Detector detected memory leaks!
    ---------- Block 1 at 0x008CD6F8: 100 bytes ----------
      Call Stack:
        c:\users\enost_000\desktop\consoleapplication1\consoleapplication1\consoleapplication1.cpp (12): ConsoleApplication1.exe!wmain + 0x7 bytes
        f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (533): ConsoleApplication1.exe!__tmainCRTStartup + 0x19 bytes
        f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (377): ConsoleApplication1.exe!wmainCRTStartup
        0x74EE8543 (File and line number not available): KERNEL32.DLL!BaseThreadInitThunk + 0xE bytes
        0x770EAC69 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x85 bytes
        0x770EAC3C (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x58 bytes
      Data:
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD                                                  ........ ........
    
    
    ---------- Block 2 at 0x008CD798: 200 bytes ----------
      Call Stack:
        c:\users\enost_000\desktop\consoleapplication1\consoleapplication1\consoleapplication1.cpp (13): ConsoleApplication1.exe!wmain + 0xD bytes
        f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (533): ConsoleApplication1.exe!__tmainCRTStartup + 0x19 bytes
        f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (377): ConsoleApplication1.exe!wmainCRTStartup
        0x74EE8543 (File and line number not available): KERNEL32.DLL!BaseThreadInitThunk + 0xE bytes
        0x770EAC69 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x85 bytes
        0x770EAC3C (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x58 bytes
      Data:
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
        CD CD CD CD    CD CD CD CD                                   ........ ........
    
    
    Visual Leak Detector detected 2 memory leaks (372 bytes).
    Largest number used: 372 bytes.
    Total allocations: 372 bytes.
    Visual Leak Detector is now exiting.
    The program '[0x262C] ConsoleApplication1.exe' has exited with code 0 (0x0).

    4、qt也vlc
      vlc只支持vc编译器,所以 qt的话只能够使用vc编译器捕捉并解决内存泄露之后,再考虑使用mingw(gcc/g++)编译程序。

  • 相关阅读:
    Linux终端基本命令
    Markdown基本语法
    谷歌浏览器解决”此Flash Player与您的地区不相容“
    谷歌浏览器不可以默认允许flash的解决方法
    MySQL8.0登陆方式
    谷歌浏览器安装位置自定义
    java生成六位验证码
    对AJAX的理解
    对servlet请求的理解
    js60秒倒计时
  • 原文地址:https://www.cnblogs.com/chuncn/p/2803450.html
Copyright © 2020-2023  润新知