遇到个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,看不到控制台的输出,浪费了一个小时