天灾的冰冻之心  

c++如何检查是否内存泄漏

今天在做OpenGL引擎的时候,突然想到检查一下内存泄漏。具体是我做了一个渲染类Render,将所有世界中存在的物体的指针都存放在这个类中。于是我不免担心,在Render中删除一个物体时,是否真的把内存都释放掉了呢?OpenGL当中各种VAO、VBO、以及我自己在类中写的各种new语句,如果没有在析构函数中释放,那是很危险的。

在程序入口写几个语句,程序退出时,如果发现有内存泄漏,会自动在DEBUG OUTPUT窗口和DebugView中输出内存泄漏信息

-- 引用自《如何检查C++中的内存泄漏 vs自带

具体代码如下

	/////////////// detect memory leak ///////////////
	int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
	tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
	_CrtSetDbgFlag(tmpFlag);
	//////////////////////////////////////////////////

如果存在内存泄漏,在程序运行结束后,下方的输出栏就会显示相应的报错信息,具体效果如下图:

经过一番调试检查,果然找到了一个类中有一个指针没有释放。

posted on 2018-03-05 16:51  天灾的冰冻之心  阅读(1492)  评论(0编辑  收藏  举报