[发明专利]内存泄漏检测装置及方法无效
申请号: | 200810084501.7 | 申请日: | 2008-03-21 |
公开(公告)号: | CN101539870A | 公开(公告)日: | 2009-09-23 |
发明(设计)人: | 刘攀 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F11/36 |
代理公司: | 北京康信知识产权代理有限责任公司 | 代理人: | 尚志峰;吴孟秋 |
地址: | 518057广东省深圳市南*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 泄漏 检测 装置 方法 | ||
技术领域
本发明涉及计算机编程领域,更具体的说,是一种用来检测程序内存泄露的通用装置和方法。
背景技术
随着嵌入式技术的发展,越来越多的领域应用到嵌入式技术。在嵌入式领域,由于资源的有限性及性能要求,该领域的编程语言一般均使用C语言。众所周知,C语言的一个特点就是内存的动态分配。动态分配内存可以灵活的使用有限的内存资源,但是带来的问题是内存的泄漏。对于内存泄露问题,除了使用特定的工具,一般很难发现。但是内存泄露却经常会造成软件的崩溃等严重问题。
使用特定工具的局限性在于这些软件工具对CPU芯片的依赖性很强,更换不同的芯片,就无法使用专用的内存检测工具来进行检测。而在嵌入式领域,芯片的种类繁多,而内存检测工具却很少。
因此,需要一种内存泄漏的检测的解决方案,能够解决上述相关技术中的问题。
发明内容
本发明的目的在于,提供一种通用的、适用于需要程序员自己进行内存分配的系统中进行内存泄露检查的装置和方法。
根据本发明的一个方面,提供了一种内存泄漏检测装置,包括:初始化模块,用于对日志文件进行初始化;内存管理模块,用于在初始化模块对日志文件进行了初始化之后进行内存分配,以及进行内存释放;记录模块,用于将关于内存分配和内存释放的信息记录到日志文件中;以及统计模块,根据内存分配和内存释放的信息统计未释放内存的次数和大小。
初始化模块还用于判断日志文件是否存在,如果不存在,则创建日志文件。
内存管理模块还用于判断内存分配是否成功,如果成功,使记录模块更新并记录内存分配的次数以及记录内存分配信息。
内存分配信息包括:内存分配的地址、大小、调用模块、文件、和行数。
内存管理模块还用于判断参数指针是否为空,在参数指针不为空的情况下查询参数指针是否被分配过,如果参数指针未被分配过,则记录参数指针并将其输出,如果参数指针被分配过,则释放内存,并更新内存释放次数及大小,并从日志文件中删除内存分配信息。
统计模块还用于计算内存分配次数、内存释放次数、未释放次数、内存分配的总大小、释放的内存的总大小、未释放的内存的大小并将其保存到日志文件以及输出至终端,以及将未释放的内存的地址、调用模块、文件、行数保存到日志文件并输出至终端。
根据本发明的另一个方面,提供了一种内存泄漏检测方法,包括以下步骤:步骤一,在对内存成功进行分配后,更新内存分配的次数并将其与内存分配信息记录到日志文件中;步骤二,在参数指针不为空且参数指针被分配过时,释放内存,更新内存释放的次数及大小并将其记录到日志文件中,以及从日志文件中删除内存分配信息;以及步骤三,根据记录在日志文件中的内存分配的次数和大小、以及内存释放的次数和大小确定未释放内存的次数和大小。
该方法还包括以下步骤:设置日志文件的存储路径;以及判断存储路径下是否存在日志文件,如果有,则对其进行初始化,如果没有,则创建日志文件,并对创建的日志文件进行初始化。
内存分配信息包括:内存分配地址、内存分配大小、内存分配模块、文件、以及行数。
步骤三还包括以下步骤:计算内存分配次数、内存释放次数、内存未释放次数、内存分配总大小、内存释放总大小、未释放内存大小,并将记录到日志文件以及将它们输出到终端;以及将未释放内存的地址、所调用的模块、文件、以及行数记录到日志文件,并将它们输出到终端。
与现有技术相比较,本发明引入了安全的内存泄露检测方案,适用于各种需要程序员自行分配内存的系统,可以统计内存使用信息,检测错误的内存释放、检测出内存泄露信息,很方便程序员进行程序调适,增强了程序的稳定性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了根据本发明实施例的内存泄漏的检测装置的框图;
图2示出了根据本发明实施例的内存泄漏的检测方法的流程图;
图3示出了根据本发明的一个实施例的内存泄漏的检测方法的流程图;
图4示出了根据本发明的一个实施例的内存泄漏检测装置的功能示意图;
图5示出了根据本发明的一个实施例的内存泄漏检测装置的结构示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810084501.7/2.html,转载请声明来源钻瓜专利网。