使用的是visual leak detector 1.0版本,将.h文件拷贝到Visual C++的默认include目录下,将.lib文件拷贝到Visual C++的默认lib目录下。以下是一个网上的测试程序:include <vld.h> 
#include <stdlib.h> 
#include <stdio.h> 
void f() 

    int *p = new int(0x12345678); 
    printf("p=%08x, ", p); 

void main() 

    f(); 

以下是本该检测出来的泄露,但我测试的时候并没有检测出来 why?????????????WARNING: Visual Leak Detector detected memory leaks! 
---------- Block 57 at 0x003A89C0: 4 bytes ---------- 
--57号块0x003A89C0地址泄漏了4个字节 
Call Stack:     --下面是调用堆栈 
d:\test\testvldconsole\testvldconsole\main.cpp (7):
 f --表示在main.cpp第7行的f()函数 
d:\test\testvldconsole\testvldconsole\main.cpp (14): 
main –双击以引导至对应代码处 
f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (586):
 __tmainCRTStartup 
f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (403):
 mainCRTStartup 
0x7C816D4F (File and line number not available): 
RegisterWaitForInputIdle 
Data:--这是泄漏内存的内容,0x12345678 
    78 56 34 12 xV4..... ........ 
Visual Leak Detector detected 1 memory leak. 

解决方案 »

  1.   

    明明已经提示你内存泄露了
    int *p = new int(0x12345678)这个表示你new了一个int型变量,并且赋值为0x12345678WARNING: Visual Leak Detector detected memory leaks! 
    ---------- Block 57 at 0x003A89C0: 4 bytes ---------- 
    --57号块0x003A89C0地址泄漏了4个字节 
    Call Stack: --下面是调用堆栈 
    d:\test\testvldconsole\testvldconsole\main.cpp (7):
     f --表示在main.cpp第7行的f()函数 
    d:\test\testvldconsole\testvldconsole\main.cpp (14): 
    main –双击以引导至对应代码处 
    f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (586):
     __tmainCRTStartup 
    f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (403):
     mainCRTStartup 
    0x7C816D4F (File and line number not available): 
    RegisterWaitForInputIdle 
    Data:--这是泄漏内存的内容,0x12345678 
      78 56 34 12 xV4..... ........ 

    Visual Leak Detector detected 1 memory leak.  后面打出的信息表示你泄露了4字节数据,而一个int型数据就是占了4字节
      

  2.   

    jwybobo2007你说的都没错,关键我问的不是这个问题。我是想说,明明有一个内存泄露的程序,为什么在我的vc6.0中没有检查出来。就是没出现以下的提示:WARNING: Visual Leak Detector detected memory leaks!  
    ---------- Block 57 at 0x003A89C0: 4 bytes ----------  
    --57号块0x003A89C0地址泄漏了4个字节  
    Call Stack: --下面是调用堆栈  
    d:\test\testvldconsole\testvldconsole\main.cpp (7):
     f --表示在main.cpp第7行的f()函数  
    d:\test\testvldconsole\testvldconsole\main.cpp (14):  
    main –双击以引导至对应代码处  
    f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (586):
     __tmainCRTStartup  
    f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (403):
     mainCRTStartup  
    0x7C816D4F (File and line number not available):  
    RegisterWaitForInputIdle  
    Data:--这是泄漏内存的内容,0x12345678  
      78 56 34 12 xV4..... ........  
    Visual Leak Detector detected 1 memory leak. 
      

  3.   

    那你上面的output信息从哪里来的?
      

  4.   

    vc是这样的,编译的时候不会给出内存泄露提示的。你用debug方式运行了,等程序退出了才会提示你内存泄露的
      

  5.   


    那是我在网上找到的关于visual leak detector使用的范例。我一步一步学着做,但同样的程序在我这就没有内存泄露的warning。