Valgrind工具linux下定位内存泄露问题
前言:
由于项目原因,需要使用某个开源的工具,不过发现功能不是完成满足我们项目的使用,对其进行了功能优化,经过发现内存存在泄露问题,由于只是对该工具的小部分功能进行优化,没时间对整个工具代码进行熟悉,所以无法从new和delete、malloc和free的对于关系等去详细排查代码。
思路:
经过搜索了解,Valgrind是一个优秀的工具。最先想直接在现有的openwrt系统上进行检测。结果发现该工具能正常安装,不过无法运行检测。每次运行了就出现一直运行状态,导致cpu占用过高,却一直无结果。最终放弃该系统。未运行成功的原因可能是系统兼容性不好,设备性能不满足它运行的要求。不过现在也不做分析。最后选择在Centos系统上进行检测。将现在代码进行linux系统上编译。成功分析出结果
使用:
常用用法:valgrind --tool=memcheck --leak-check=full 执行程序名
泄露结果展示:

输出结果:包含内存泄露的单块内存大小、内存块个数、该块内存申请的代码行等
注意:当某些程序是因为中途异常中断而导致内存泄露的,可能不是正在的内存泄露,需要结合实际的代码分析
未泄露的结果:

找到一篇详细的工具使用说明:http://blog.csdn.net/sduliulun/article/details/7732906

浙公网安备 33010602011771号