cocos2dx内存泄露检测
在编写程序的过程中,难免会出现内存泄露的问题。为了有效检测内存泄露,我们可以采取多种措施。今天,将为大家介绍一款适用于 Windows 系统的内存检测工具——Visual Leak Detector for Visual C++。
工具下载与安装
首先,需要前往该工具的官网下载最新版本并完成安装。
在 VS 控制台项目中配置使用
项目创建
使用 Visual Studio 建立一个 C++ 控制台项目。
配置步骤
- 头文件复制:将 VLD 安装目录下
include文件夹中的头文件复制到 C++ 项目目录下。 - 库文件复制:把
lib/win32文件夹(如果使用的是 64 位的 VS 版本,则选择win64文件夹)复制到 C++ 项目目录。 - 二进制文件复制:将
bin/win32文件夹复制到 C++ 项目的Debug目录下。需注意,要先以Debug模式运行一次 C++ 项目,确保Debug目录存在。 - 包含头文件:在
main.cpp文件中添加头文件包含语句#include "vld.h"。
测试运行
完成上述配置后,编译并运行项目。若输出特定信息,则表示无内存泄露。接下来,我们可以对代码进行修改,再次运行项目。此时,若发现有一字节的内存泄露,同时还能看到内存泄露的具体代码位置。
方便 Cocos2d-x 新项目的内存检测配置
为了在以后新建 Cocos2d-x 项目时能够更方便地进行内存检测,可以进行如下配置:
- 头文件全局复制:将 VLD 的
include头文件复制到 VS 安装目录下的C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include文件夹中。 - 库文件全局复制:将 VLD 的
lib文件复制到C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib文件夹中。由于这里安装的是 32 位版本,所以复制win32文件夹下的文件。
Cocos2d-x 3.x 项目测试
项目创建
使用 Cocos 引擎建立一个新的 Cocos2d-x 3.x 项目。
开启内存检测
在代码中添加 #define VLD_FORCE_ENABLE 语句,其作用是开启 VLD 内存检测。查看 vld.h 头文件可以发现,只有定义了特定的宏才能开启内存检测。
运行结果
运行项目并关闭程序后,可能会发现存在 20 个字节的内存泄露。不过,在某些版本中可能存在内存泄露,而在其他版本中则可能没有。这种少量的内存泄露在一定程度上是可以接受的。
集成 Bullet 的 Cocos2d-x 程序测试
接下来,我们可以测试集成了 Bullet 的 Cocos2d-x 程序是否也存在 20 个字节的内存泄露。如果结果相同,说明我们编写的几个 Physics 类没有内存泄露问题。笔者在运行测试后,发现该程序依然是 20 字节的内存泄露,这表明程序比较稳定。