内存泄露带来的问题我想我就不必多少了,检测内存泄露有很多种方法,比如使用一些智能指针。但本文介绍的方法有些不同,我们将自己维护一个数组列表,记录下 new 内存时代码所在的文件、行号、以及大小、和是否已经被 delete 信息,将这些信息放到我们维护的数组中,当程序要检查内存泄露或者程序退出时,我们遍历整个堆内存,并把每一个堆内存块在我们维护的数组中遍历,如果发现某些内存并没有被标记为 delete 状态,那么则判定为泄露。
代码示意图
效果图
这里的代码巧妙的用到了 Visual Studio 一个小技巧,在输出窗口中输入文件+行号后,我们可以双击这一行的内容快速定位到文件和具体行。先看一下效果图。
实现代码
1 | #include <tchar.h> |