对于比较明显的内存泄漏,vc2008是比较容易定位的,在Debug模式F5运行,退出时会列出引起内存泄漏的问题代码所在文件及行号;但如果是比较隐蔽的内存泄漏,Output输出窗口只会输出部分信息,形式如下:
Detected memory leaks!
Dumping objects ->
{858} normal block at 0x003ED290, 12 bytes long.
Data: < \H > A0 5C 48 00 00 00 00 00 00 00 00 00
Object dump complete.
我们来看一下输出信息的格式。
{xxx} — 表示程序运行后第xxx次内存分配发生了泄漏,即内存分配编号;
xxx block — 表示内存块类型,包括三种:普通(normal)、客户端(client)和运行时(CRT);
at 0xFFFFFFFF — 表示发生泄漏的内存地址,用十六进制表示;
xx bytes long — 表示发生泄漏的内存大小;