目录
概述
任何软件在开发过程中都或多少的存在内存泄漏的问题,C++更是如此。这个时候,对内存泄漏的检测就显得格外重要了。常见的内存泄漏检测方式有3种:
- 在编写程序后,使用调试器进行跟踪,以便找出问题。
- 通过工具检测程序对内存的使用情况,找出没有正确释放的内存点
- 通过HOOK或者inject方式集成到程序内部,在运行时自动跟踪程序对内存的操作情况,以定位泄漏点
第一种方式一般都是编写程序时顺带的工作,所以不再单独列出。第三种方式和第一种方式类似,但比它多了内存的跟踪,属于半自动检测,具有较高的灵活性,读者可以自己尝试。这里我主要介绍第二种,这也是比较常见的方式。
检测工具分析
1. heob
这个一般是QT开发者经常使用的的工具,它一般和QT creator集成,也可以单独使用。它具有如下特点:
优点:开源免费,和qt有较好的集成度,配合起来使用非常容易上手。
缺点: 检测使用动态链接库的程序,不能检测出动态链接库中的内存泄漏问题
2. MTuner
基于qt界面的检测工具,具有不错的可视化功能,同时也支持命令行。特点:
优点:开源免费,可视化操作,上手容易,具有不错的分析功能,不影响程序的运行性能,提供了额外的sdk给程序集成。
缺点:默认发行的版本只有mingw版本的,并且无法自行编译;且堆