社区
C++ 语言
帖子详情
VLD使用时出现问题
JACK和他的小工具们
2013-06-16 02:00:43
如题 c++ vs2012 使用vld(Visual Leak Detector)检测内存泄露问题,我在这链接学的http://www.360doc.com/content/08/1128/11/59141_2010512.shtml ,也是用他的代码,可是运行后的Call Stack:没有内容,求解
...全文
341
4
打赏
收藏
VLD使用时出现问题
如题 c++ vs2012 使用vld(Visual Leak Detector)检测内存泄露问题,我在这链接学的http://www.360doc.com/content/08/1128/11/59141_2010512.shtml ,也是用他的代码,可是运行后的Call Stack:没有内容,求解
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leonlcx
2016-01-26
打赏
举报
回复
这个是怎么回事
leonlcx
2016-01-26
打赏
举报
回复
我用的VS2012 只有底下这个,没有别的 Visual Leak Detector Version 1.0 installed (multithreaded DLL).
mujiok2003
2013-06-16
打赏
举报
回复
可能的.分配的时候,可以加上一个cookie便于找到泄露的地方.
JACK和他的小工具们
2013-06-16
打赏
举报
回复
output内容如下 ------------------------------ 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Users\HPC\Documents\Visual Studio 2012\Projects\ConsoleApplication3\Debug\ConsoleApplication3.exe'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr110d.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shlwapi.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\lpk.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\usp10.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\imm32.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msctf.dll'. Symbols loaded. 'ConsoleApplication3.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dbghelp.dll'. Symbols loaded. Visual Leak Detector Version 1.0 installed (multithreaded DLL). WARNING: Visual Leak Detector detected memory leaks! ---------- Block 63 at 0x0046F390: 4 bytes ---------- Call Stack: Data: 78 56 34 12 xV4..... ........ Visual Leak Detector detected 1 memory leak. Visual Leak Detector is now exiting. 'ConsoleApplication3.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\dbghelp.dll' The program '[30168] ConsoleApplication3.exe' has exited with code 0 (0x0).
vld
-2.3-资源泄漏检测
由于C/C++语言没有所谓的垃圾收集器,内存的分配和释放都需要程序员自己来控制,这会给C/C++程序员带来一定的困难。当您的程序越来越复杂
时
,它的内存管理也会变得越来越困难。内存泄漏、内存越界是最常见的内存
问题
之一。 内存泄漏如果不是很严重的话,在短
时
间内对程序不会造成太大的影响,而且在进程终止的
时
候,所有分配的内存都会释放掉。但是对于长
时
间运行的程序,其破坏力是惊人的,从性能下降到内存耗尽,甚至会影响到其它程序的正常运行。 此外,内存
问题
存在一个共同的特点,它本身并不会有很明显的现象,当有异常
出现
时
就很难检查
问题
的原因所在,这给调试内存
问题
带来了很大的难度。
VLD
是一款用于VisualC++的免费内存泄漏检查工具。可以在codeproject.com网站上找到,相比其它的内存泄漏哦给你根据,他在检查内存泄漏的同事,还具有如下特点: 1) 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在的文件及行号; 2) 可以得到泄漏内存的完整数据; 3) 恶意设置内存泄漏报告的级别; 4) 它以动态库的形式提供,无需编译源代码,只需要很小的改动程序; 5) 源代码
使用
GNU许可发布,并有详细的文档及其注释。 从
使用
的角度讲,
VLD
简单易用,对于
使用
者自己的代码中唯一需要修改的地方是#include
VLD
的头文件后正常运行自己的程序就可以发现内存
问题
。从研究角度上讲,如果输入到
VLD
源代码,可以学习到堆内存分片与释放的原理、内存检查的原理机器内存操作的常用技巧等。
vld
2.5.1 支持到最高vs2015
VLD
同样是一款开源检测内存泄露软件的简称:Visual Leak Detector。 初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂
时
,内存的管理也会变得越加复杂,稍有不慎就会
出现
内存
问题
。内存泄漏是最常见的内存
问题
之一。内存泄漏如果不是很严重,在短
时
间内对程序不会有太大的影响,这也使得内存泄漏
问题
有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长
时
间运行
时
,其破坏力是惊人的,从性能下降到内存耗尽,甚至会影响到其他程序的正常运行。另外内存
问题
的一个共同特点是,内存
问题
本身并不会有很明显的现象,当有异常现象
出现
时
已
时
过境迁,其现场已非
出现
问题
时
的现场了,这给调试内存
问题
带来了很大的难度。 Visual Leak Detector是一款用于Visual C++的免费的内存泄露检测工具。相比较其它的内存泄露检测工具,它在检测到内存泄漏的同
时
,还具有如下特点: 1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 2、 可以得到泄露内存的完整数据; 3、 可以设置内存泄露报告的级别; 4、 它是一个已经打包的lib,
使用
时
无须编译它的源代码。而对于
使用
者自己的代码,也只需要做很小的改动; 5、 他的源代码
使用
GNU许可发布,并有详尽的文档及注释。对于想深入了解堆内存管理的读者,是一个不错的选择。 常见
使用
方法: 在main函数文件的最上方 #ifdef WIN32 || WIN64 #define
VLD
_FORCE_ENABLE #include #endif 修改
vld
安装目录的ini文件中 修改 ReportTo = debugger ->> ReportTo = both
vld
(Visual Leak Detector 内存泄露检测工具 源码)
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂
时
,内存的管理也会变得越加复杂,稍有不慎就会
出现
内存
问题
。内存泄漏是最常见的内存
问题
之一。内存泄漏如果不是很严重,在短
时
间内对程序不会有太大的影响,这也使得内存泄漏
问题
有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长
时
间运行
时
,其破坏力是惊人的,从性能下降到内存耗尽,甚至会影响到其他程序的正常运行。另外内存
问题
的一个共同特点是,内存
问题
本身并不会有很明显的现象,当有异常现象
出现
时
已
时
过境迁,其现场已非
出现
问题
时
的现场了,这给调试内存
问题
带来了很大的难度。 Visual Leak Detector是一款用于Visual C++的免费的内存泄露检测工具。相比较其它的内存泄露检测工具,它在检测到内存泄漏的同
时
,还具有如下特点: 1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 2、 可以得到泄露内存的完整数据; 3、 可以设置内存泄露报告的级别; 4、 它是一个已经打包的lib,
使用
时
无须编译它的源代码。而对于
使用
者自己的代码,也只需要做很小的改动; 5、 他的源代码
使用
GNU许可发布,并有详尽的文档及注释。对于想深入了解堆内存管理的读者,是一个不错的选择。 可见,从
使用
角度来讲,Visual Leak Detector简单易用,对于
使用
者自己的代码,唯一的修改是#include Visual Leak Detector的头文件后正常运行自己的程序,就可以发现内存
问题
。从研究的角度来讲,如果深入Visual Leak Detector源代码,可以学习到堆内存分配与释放的原理、内存泄漏检测的原理及内存操作的常用技巧等。 本文首先将介绍Visual Leak Detector的
使用
方法与步骤,然后再和读者一起初步的研究Visual Leak Detector的源代码,去了解Visual Leak Detector的工作原理。
使用
Visual Leak Detector(1.0) 下面让我们来介绍如何
使用
这个小巧的工具。 首先从网站上下载zip包,解压之后得到
vld
.h,
vld
api.h,
vld
.lib,
vld
mt.lib,
vld
mtdll.lib, dbghelp.dll等文件。将.h文件拷贝到Visual C++的默认include目录下,将.lib文件拷贝到Visual C++的默认lib目录下,便安装完成了。因为版本
问题
,如果
使用
windows 2000或者以前的版本,需要将dbghelp.dll拷贝到你的程序的运行目录下,或其他可以引用到的目录。 接下来需要将其加入到自己的代码中。方法很简单,只要在包含入口函数的.cpp文件中包含
vld
.h就可以。如果这个cpp文件包含了stdafx.h,则将包含
vld
.h的语句放在stdafx.h的包含语句之后,否则放在最前面。如下是一个示例程序: #include void main() { … } 接下来让我们来演示如何
使用
Visual Leak Detector检测内存泄漏。下面是一个简单的程序,用new分配了一个int大小的堆内存,并没有释放。其申请的内存地址用printf输出到屏幕上。 #include #include #include void f() { int *p = new int(0x12345678); printf("p=%08x, ", p); } void main() { f(); } 编译运行后,在标准输出窗口得到: p=003a89c0 在Visual C++的Output窗口得到: WARNING: Visual Leak Detector detected memory leaks! ---------- Block 57 at 0x003A89C0: 4 bytes ---------- --57号块0x003A89C0地址泄漏了4个字节 Call Stack: --下面是调用堆栈 d:\test\test
vld
console\test
vld
console\main.cpp (7): f --表示在main.cpp第7行的f()函数 d:\test\test
vld
console\test
vld
console\main.cpp (14): main –双击以引导至对应代码处 f:\rtm\vctools\crt_bld\self_x8
(Visual Leak Detector)
vld
-2.5.1-setup.exe.7z
灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂
时
,内存的管理也会变得越加复杂,稍有不慎就会
出现
内存
问题
。内存泄漏是最常见的内存
问题
之一。内存泄漏如果不是很严重,在短
时
间内对程序不会有太大的影响,这也使得内存泄漏
问题
有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长
时
间运行
时
,其破坏力是惊人的,从性能下降到内存耗尽,甚至会影响到其他程序的正常运行。另外内存
问题
的一个共同特点是,内存
问题
本身并不会有很明显的现象,当有异常现象
出现
时
已
时
过境迁,其现场已非
出现
问题
时
的现场了,这给调试内存
问题
带来了很大的难度。 Visual Leak Detector是一款用于Visual C++的免费的内存泄露检测工具。相比较其它的内存泄露检测工具,它在检测到内存泄漏的同
时
,还具有如下特点: 1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 2、 可以得到泄露内存的完整数据; 3、 可以设置内存泄露报告的级别; 4、 它是一个已经打包的lib,
使用
时
无须编译它的源代码。而对于
使用
者自己的代码,也只需要做很小的改动; 5、
PotPlayer 最好的多媒体绿色播放软件
各种格式的音视频教程都能看了! - 修正在基本项中切换皮肤出错
问题
- 修正无法打开某些 HTTP 链接
问题
- 修正在打开某些 HTTP 链接
时
程序报错
问题
- 修正在调整播放速度
时
伴随
出现
噪音
问题
1、支持32位和64位系统。 2、内置硬件加速解码,支持MPEG1/2(IDCT/MoComp),WMV2(MoComp),WMV3(IDCT/MoComp),VC-1(IDCT/MoComp/
VLD
),H.264/AVC1(
VLD
)。因为功能属于测试阶段,可能会引起各种
问题
。 3、内置 E_AC3 音频解码。 4、网络流媒体播放支持。 5、播放H264、VC1、MPEG I \ II TS \ PS 等编码,只要
使用
设定内建硬解都可顺利硬解,不用其它解码器。 6、可以较完整的支持 ASS\SSA 字幕,不会发生 KMP 中字幕被截断的
问题
,但依然支持不完全。
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章