visual leak detector 在vc6.0下使用怎么检测不到内存泄露

metyoo 2011-01-09 09:36:14
使用的是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.




...全文
465 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwybobo2007 2011-01-11
  • 打赏
  • 举报
回复
明明已经提示你内存泄露了
int *p = new int(0x12345678); 这个表示你new了一个int型变量,并且赋值为0x12345678

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.

后面打出的信息表示你泄露了4字节数据,而一个int型数据就是占了4字节
arong1234 2011-01-11
  • 打赏
  • 举报
回复
不是每个软件都有所有你想要的功能的。[Quote=引用 6 楼 metyoo 的回复:]
引用 4 楼 visualeleven 的回复:

引用 3 楼 metyoo 的回复:
jwybobo2007你说的都没错,关键我问的不是这个问题。我是想说,明明有一个内存泄露的程序,为什么在我的vc6.0中没有检查出来。

就是没出现以下的提示:

WARNING: Visual Leak Detector detected memory leaks!
---------- B……
[/Quote]
metyoo 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]

引用 3 楼 metyoo 的回复:
jwybobo2007你说的都没错,关键我问的不是这个问题。我是想说,明明有一个内存泄露的程序,为什么在我的vc6.0中没有检查出来。

就是没出现以下的提示:

WARNING: Visual Leak Detector detected memory leaks!
---------- Block 57 at 0x003A89C0: 4 by……
[/Quote]

那是我在网上找到的关于visual leak detector使用的范例。我一步一步学着做,但同样的程序在我这就没有内存泄露的warning。
varding 2011-01-11
  • 打赏
  • 举报
回复
vc是这样的,编译的时候不会给出内存泄露提示的。你用debug方式运行了,等程序退出了才会提示你内存泄露的
Eleven 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 metyoo 的回复:]
jwybobo2007你说的都没错,关键我问的不是这个问题。我是想说,明明有一个内存泄露的程序,为什么在我的vc6.0中没有检查出来。

就是没出现以下的提示:

WARNING: Visual Leak Detector detected memory leaks!
---------- Block 57 at 0x003A89C0: 4 bytes ----------
-……
[/Quote]
那你上面的output信息从哪里来的?
metyoo 2011-01-11
  • 打赏
  • 举报
回复
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.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧