C++ 简单内存泄漏检测方法

遇到个bug,MFC程序异常退出,debug模式下输出

Detected memory leaks!
Dumping objects ->
{366566} normal block at 0x0000017D52F19440, 16 bytes long.
 Data: <  LO}           > D0 A5 4C 4F 7D 01 00 00 00 00 00 00 00 00 00 00 
{366565} normal block at 0x0000017D4F4CA5D0, 960 bytes long.

 网上查到的方法:

1. 包含

#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#include <stdlib.h>

2. 在程序开始启动的地方(足够前的地方,只要在泄漏的内存分配的前面)使用代码:

_CrtSetBreakAlloc(366566); //366566为上面内存泄漏的块号.

3. 点击break. 一直点击"调试" –> "退出" ,快捷键为:"Shift + F11" .查看调用堆栈。

终于找到了罪魁祸首:

竟然在glsl里面用了auto !因为是MFC,看不到控制台的输出,浪费了一个小时

 

原文地址:https://www.cnblogs.com/redips-l/p/9052111.html