问题
最近在开发项目的过程中,遇到了内存暴涨,最后出现“std::bad_alloc”。苦于不能定位内存泄漏的位置,使用了 Visual Leak Detector,终于找到了内存泄漏的位置。
操作方法
先在到地址http://vld.codeplex.com/下载vld安装文件,然后进行安装,安装过程中需要安装程序会配置环境变量。我们需要记住安装目录。
安装完成后打开要检测的Visual Studio工程,我们需要在工程中配置:vld头文件目录和vld库目录。
选中游戏工程,打开菜单“项目”→ “属性”弹出工程属性对话框,如图所示,选择“配置属性”→“VC++目录” →“常规”,在右边的“包含目录”中添加C:\Program Files (x86)\Visual Leak Detector\include,其中C:\Program Files (x86)\Visual Leak Detector是我的vld安装目录。“库目录”中添加C:\Program Files (x86)\Visual Leak Detector\lib\Win32,注意配置目之间需要用分号分隔开。
如果在main.cpp中引入代码如下:
//包含vld的头文件
#include <vld.h>
接下来就可以愉快的进行内存泄漏问题的定位了。但是没想到友出现了问题,运行程序不能找到“vld_x86.dll”,好吧,那我就吧vld安装路径下的“vld_x86.dll”复制到调试程序的当前路径。
但是,依旧没有解决问题,又弹出了“应用程序无法正常启动”。经过万能的百度,将vld程序安装路径bin目录下的3个文件全部复制到到调试程序的当前路径。如图所示
终于可以愉快的进行内存泄漏问题的定位了。
运行程序…
注意:只能在debug模式下查看输出的日志。
运行工程,需要注意的是在程序运行过程中vld是没有堆栈输出的,但是日志会有输出vld的安装信息,日志信息如下:
Visual Leak Detector Version 2.4RC2 installed.
Ready for GLSL
Ready for OpenGL 2.0
… …
从日志中可以看到vld是否安装成功,以及安装的版本。要想看到vld检测报告需要退出程序后,才会在日志中输出信息
好了,快去查看一下你的代码有没有内存泄漏吧
资源
vld工具安装包
提取码:yyds