开发环境:Win7 64位,VS2013
内存泄漏一直是让C/C++程序员头疼的事情,虽然网上也有许多检查内存泄漏的工具,但是如果能够自己开发一个检查内存泄漏的小工具,并且通过实现一个小工具来深入了解内存分配与释放,以及内存泄漏检查原理,也是对自己能力的极好提升。
下面先展示一下自己开发内存泄漏检查小工具,后面的文章会详细介绍其实现原理。如图:
小工具非常界面非常简单,毕竟界面不是我所关心的重点。1处表示内存泄漏的source源文件;2处表示每一次发生内存分配的请求号,也就是每次调用内存分配函数时的函数调用堆栈记录,双击文件列表可以在1处打开泄漏源文件并定位到泄漏行号;3处代表泄漏汇总窗口,双击一项可以定位到2号窗口的分配请求号位置。
小工具的使用也非常简单,启动Analyzer.exe,如下图:
没错, 该小工具就是利用DLL注入技术,设置想要监听程序的内存分配Hook,监听任意一个分配请求。启动想要监听的程序,如下图:
调用栈窗口会动态刷新内存分配情况,当监听进程结束后,MemoryLeaks窗口是汇总内存泄漏情况。
下面的blog,我会仔细分析这个小工具的实现原理与过程。
源代码参见git地址: https://github.com/Winux1062/MemoryTool