[发明专利]检测内存泄露的方法与装置有效
| 申请号: | 201310222691.5 | 申请日: | 2013-06-05 |
| 公开(公告)号: | CN103268287B | 公开(公告)日: | 2017-03-15 |
| 发明(设计)人: | 张维 | 申请(专利权)人: | 福州瑞芯微电子股份有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 福州市景弘专利代理事务所(普通合伙)35219 | 代理人: | 林祥翔,吕元辉 |
| 地址: | 350000 福建省*** | 国省代码: | 福建;35 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 检测 内存 泄露 方法 装置 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种检测计算机程序运行过程中内存泄露的方法与装置。
背景技术
在使用支持有内存分配的语言,(例如C,C+,C++,OBJECTIVE-C语言)过程中,需要大量的手动分配内存,而分配之后的释放时常会遗忘,造成内存泄漏,因此对于内存泄漏的检测是十分必要的。
目前,业界已经有许多代码和工具用于做内存泄漏的检测,但是通过代码运行后进行内存泄漏检测,其检测后的内容不直观,还需要分析是哪一行的代码存在内存泄漏。如果使用工具进行检测,消耗的成本比较大,而且可能会产生漏测的情况。而且通常的测量方式存在生成的目标代码过大,检测开关切换不方便等问题。
发明内容
本发明的目的在于,提供一种检测内存泄露的方法与装置,既可以直观方便地检测内存泄露,又不会使生成的目标代码过大,也可以非常方便的切换检测开关。
为实现上述发明目的,本发明提供了一种检测内存泄露的方法,包括以下步骤:
启动程序;
分配新内存时,根据内存分配的地址,在设定的路径内生成内存跟踪文件,内存跟踪文件的内容或文件名与分配的内存地址、分配内存的文件或分配内存的源代码的行号相关;
释放内存时,根据传进的内存地址,删除相应的内存跟踪文件。
优选地,在步骤启动程序与步骤分配新内存之间,进行步骤:
创立内存跟踪文件夹;
在步骤分配新内存时,根据内存分配的地址,在内存跟踪文件夹内生成内存跟踪文件。
优选地,所述内存跟踪文件的文件名为分配的内存的地址号,文件内容为分配内存的文件和分配内存的源代码的行号。
优选地,在步骤启动程序之后,判断是否检测内存泄露,若是,则进行步骤:根据内存分配的地址,在设定的路径内生成内存跟踪文件;若否,不检测内存泄露。
更优选地,若不检测内存泄露,使用程序语言自身函数进行内存的分配与释放。
优选地,分配新内存通过运行定义的分配内存宏实现 ,所述分配内存宏与以下参数相关 :要分配的内存的地址、代码文件的名称以及程序代码的行号;所述释放内存是通过定义的释放内存宏实现的,所述释放内存与参数:分配的内存的地址相关。
更优选地,所述判断是否检测内存泄露是通过检测配置文件中检测开关是否开启进行判断。
优选地,所述程序的源代码使用C,C+,C++或OBJECTIVE-C语言编写。
为实现本发明的另一个发明目的,本发明提供了一种检测内存泄露的装置,所述检测内存泄露的装置包括以下模块:
生成模块,分配新内存时,根据内存分配的地址,在设定的路径内生成内存跟踪文件,内存跟踪文件的内容或文件名与分配的内存地址、分配内存的文件或分配内存的源代码的行号相关;
删除模块,用于释放内存时,根据传进的内存地址,删除相应的内存跟踪文件。
优选地,所述生成模块还用于创立内存跟踪文件夹,在步骤分配新内存时,根据内存分配的地址,在内存跟踪文件夹内生成内存跟踪文件,所述内存跟踪文件的文件名为分配的内存的地址号,文件内容为分配内存的文件和分配内存的源代码的行号。
与现有技术不同地,本发明通过分配新内存时,根据内存分配的地址,在设定的路径内生成内存跟踪文件,然后释放内存时,根据传进的内存地址,删除相应的内存跟踪文件。由于内存跟踪文件的内容或文件名与分配的内存地址、分配内存的文件或分配内存的源代码的行号相关;因此当程序运行完毕之后,可以根据设定的路径内所存在的内存跟踪文件判断内存泄露的情况。若设定的路径内存在未删除的内存跟踪文件,则说明有分配的内存未被释放。本发明操作十分方便,且不会使生成的目标代码过大,通过肉眼观察即可很直观地发现代码文件中是否出现内存泄漏的问题。而且本发明布署方便,无需工具,不需要开发人员具备很强的代码调试能力;同时不需要开发人员全程参与,减小测试时对开发人员的依赖。
附图说明
图1为本发明具体实施方式所述检测内存泄露的方法的流程图;
图2为本发明具体实施方式所述检测内存泄露的装置的模块图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
请参阅图1本实施例提供了一种检测内存泄露的方法,包括以下步骤:
S101启动程序;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福州瑞芯微电子股份有限公司,未经福州瑞芯微电子股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310222691.5/2.html,转载请声明来源钻瓜专利网。





