今天在做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);
	//////////////////////////////////////////////////

如果存在内存泄漏,在程序运行结束后,下方的输出栏就会显示相应的报错信息,具体效果如下图:
VS环境下C++如何检查是否内存泄漏

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

相关文章:

  • 2022-02-12
  • 2021-09-17
  • 2022-12-23
  • 2021-11-30
  • 2021-06-08
  • 2022-12-23
  • 2021-12-18
猜你喜欢
  • 2021-05-11
  • 2022-12-23
  • 2021-11-28
  • 2022-01-03
  • 2022-12-23
  • 2021-08-26
  • 2021-06-29
相关资源
相似解决方案