这是C和C++程序员的噩梦之一。
1)实质:
内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费;
2)原理:
内存泄露的关键就是记录分配的内存和释放内存的 *** 作,看看能不能匹配。跟踪每一块内存的生命周期;
3)方法:不同开发环境有不同的检测方法,下面以VisualStudio为例介绍。
在VS中使用时,需加上
#define _CRTDBG_MAP_ALLOC
#include <crtdbgh>
crtdbgh的作用是将malloc和free函数映射到它们的调试版本_malloc_dbg和_free_dbg,这两个函数将跟踪内存分配和释放(在Debug版本中有效)
_CrtDumpMemoryLeaks();
函数将显示当前内存泄露,也就是说程序运行到此行代码时的内存泄露,所有未销毁的对象都会报出内存泄露,因此要让这个函数尽量放到最后。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)