CN1979427A - 嵌入式系统中自动监测内存泄漏与内存越界的方法 - Google Patents
嵌入式系统中自动监测内存泄漏与内存越界的方法 Download PDFInfo
- Publication number
- CN1979427A CN1979427A CN 200510130086 CN200510130086A CN1979427A CN 1979427 A CN1979427 A CN 1979427A CN 200510130086 CN200510130086 CN 200510130086 CN 200510130086 A CN200510130086 A CN 200510130086A CN 1979427 A CN1979427 A CN 1979427A
- Authority
- CN
- China
- Prior art keywords
- memory
- application program
- program module
- internal memory
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式系统中自动监测内存泄漏与内存越界的方法,包括以下步骤:(a)进入应用程序模块时,对该模块设置身份标识、内存使用情况标识,同时建立若干个空的内存地址索引项,每一个内存地址索引项指向一个内存索引地址;(b)应用程序模块利用空闲的内存地址索引项申请空闲内存块,记录该应用程序模块所使用内存块的索引地址及其大小;(c)应用程序模块结束操作,如果申请的内存索引地址处的内存块大小与申请的内存块大小不相同,则发出内存越界错误报警;(d)应用程序模块退出时,如果存在非空内存索引项,发出内存泄漏错误报警。本发明使得嵌入式系统中不恰当的内存操作能够及时发现,有利于内存的高效使用。
Description
技术领域
本发明涉及一种嵌入式系统中自动监测内存泄漏与内存越界的方法,属于计算机技术领域。
背景技术
嵌入式系统是一种资源比较受限的系统,资源要比桌面PC更为宝贵,因而内存有效使用的重要性勿庸置疑。如何利用好有限的内存发挥最大效能,就成了嵌入式系统进一步发展的问题关键。
然而,不恰当的内存操作通常阻碍了内存的使用,如:“内存泄漏”,也即不能正确地释放已分配的动态内存,就是一种非常难于检测的内存错误,持续的内存泄漏会使程序性能下降到最终完全不能运行,进而影响到所有其它有动态内存需求的程序,在某些相对简单的嵌入式平台上甚至会妨碍操作系统的运转;又如“内存越界”,一种不合法的内存操作,极可能破坏到本程序中正在使用的其它数据,严重的时候还可能对其它正在运行的程序甚至整个系统造成影响。
因此如何有效地监测内存泄漏与内存越界是亟待解决的一个问题。
发明内容
本发明要解决的技术问题是:提出一种能够自动监测内存泄漏与内存越界的方法,使得嵌入式系统中不恰当的内存操作能够及时发现,有利于嵌入式系统中有限内存的效率使用。
本发明是通过下述技术手段来实现的:
一种嵌入式系统中自动监测内存泄漏与内存越界的方法,包括以下步骤:
(a)进入应用程序模块时,对该应用程序模块设置身份标识、以及内存使用情况标识,同时建立若干个空的内存地址索引项,每一个内存地址索引项指向一个内存索引地址;
(b)应用程序模块利用空闲的内存地址索引项申请空闲内存块,记录该应用程序模块所使用内存块的索引地址及其大小;
(c)应用程序模块结束操作,判断申请的内存索引地址处的内存块大小与申请的内存块大小是否相同,如果不相同,则发出内存越界错误报警提示;
(d)应用程序模块退出时,查找该应用程序模块申请内存对应的所有内存索引项,如果存在非空内存索引项,则发出内存泄漏错误报警提示。
进一步地,所述的步骤(a)中,内存索引为数组,数组大小为应用程序模块的最大使用值。
进一步地,所述的步骤(a)中,内存索引为动态链表形式,在内存申请时自动添加。
进一步地,所述的步骤(b)中,申请内存块的大小为:应用程序模块运行所需内存与内存索引地址指针长度之和。
更进一步地,所述的内存索引地址指针长度为4。
进一步地,所述的步骤(c)中,释放内存块的大小为:释放内存块与内存索引地址指针长度之和。
更进一步地,所述的内存索引地址指针长度为4。
本发明所提出的自动监测内存泄漏与内存越界的方法,使得嵌入式系统中不恰当的内存操作能够及时发现,有利于嵌入式系统中有限内存的高效率使用。
附图说明
图1为本发明具体实施例中自动监测内存泄漏与内存越界的方法的实现流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的介绍,但不作为对本发明的限定。
参考图1所示,为一种嵌入式系统中自动监测内存泄漏与内存越界的方法的流程图,该方法实现过程中包括如下步骤:
步骤101:进入应用程序模块M时,初始化一块区域,该区域包括模块M的内存控制区和内存索引区,其中:内存控制区用于保存模块M的ID标识,模块M对内存的使用情况等;内存索引区记录模块M分配的内存地址,该区域包括多个内存索引项,每一个内存索引项指向一个内存地址,初始状态时,内存索引项均置为空闲。内存索引区可以是数组,数组的大小根据模块M对内存的使用情况确定一个合理的最大值;也可以是链表的形式,在模块M申请内存的时候动态的添加。
步骤102:应用程序模块M启动后,申请大小为Size的内存,执行其操作进程,具体实现过程如下:
(1)在模块M的内存索引区中查找一个空闲的内存索引项S1,该内存索引项S1指向的内存索引地址为DS1;
(2)通过系统提供的内存分配函数申请大小为Size+Head的一个内存块D1,其中Head的大小为内存地址指针的长度,一般为4,该内存块D1对应的内存索引地址为DS1。
此时,模块内存控制区中对应记录模块M对内存的使用情况,包括:使用地址、占用内存块大小。
步骤103:应用程序模块M完成操作后,释放内存P,具体实现过程如下:
读取P-Head处的内存索引地址DS1,如果内存索引地址DS1处的内存块D1的大小等于内存块P-Head的大小,释放内存块P-Head,设置DS1的内容为空,继续执行下一步骤;如果内存块D1的大小不等于内存块P-Head的大小,说明需要释放的内存P地址是错误的或者是该内存块遭到破坏,进行内存越界报警,并报告内存释放错误。
步骤104:应用程序模块M退出进程,判断其是否存在泄漏内存,如果存在,继续释放泄漏内存空间,该操作的实现过程如下:
查找应用程序模块M对应的所有内存索引项,如果有某个内存索引项不为空,说明该应用程序模块M有内存泄漏,进行内存泄漏报警,并报告内存泄漏地址。
当出现内存越界报警或者内存泄漏报警后,可以由其他程序或用户来判断是否对错误报警作出处理,由此实现对内存更加可靠的操作。防止了为满足某种特殊要求而设计不释放某些内存时,误认为内存操作错误自动修复错误的发生。
Claims (7)
1、一种嵌入式系统中自动监测内存泄漏与内存越界的方法,包括以下步骤:
(a)进入应用程序模块时,对该应用程序模块设置身份标识、以及内存使用情况标识,同时建立若干个空的内存地址索引项,每一个内存地址索引项指向一个内存索引地址;
(b)应用程序模块利用空闲的内存地址索引项申请空闲内存块,记录该应用程序模块所使用内存块的索引地址及其大小;
(c)应用程序模块结束操作,判断申请的内存索引地址处的内存块大小与申请的内存块大小是否相同,如果不相同,则发出内存越界错误报警提示;
(d)应用程序模块退出时,查找该应用程序模块申请内存对应的所有内存索引项,如果存在非空内存索引项,则发出内存泄漏错误报警提示。
2、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的步骤(a)中,内存索引为数组,数组大小为应用程序模块的最大使用值。
3、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的步骤(a)中,内存索引为动态链表形式,在内存申请时自动添加。
4、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的步骤(b)中,申请内存块的大小为:应用程序模块运行所需内存与内存索引地址指针长度之和。
5、如权利要求4所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的内存索引地址指针长度为4。
6、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的步骤(c)中,释放内存块的大小为:释放内存块与内存索引地址指针长度之和。
7、如权利要求6所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的内存索引地址指针长度为4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101300860A CN100487657C (zh) | 2005-12-08 | 2005-12-08 | 嵌入式系统中自动监测内存泄漏与内存越界的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101300860A CN100487657C (zh) | 2005-12-08 | 2005-12-08 | 嵌入式系统中自动监测内存泄漏与内存越界的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1979427A true CN1979427A (zh) | 2007-06-13 |
CN100487657C CN100487657C (zh) | 2009-05-13 |
Family
ID=38130605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101300860A Expired - Fee Related CN100487657C (zh) | 2005-12-08 | 2005-12-08 | 嵌入式系统中自动监测内存泄漏与内存越界的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100487657C (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461880A (zh) * | 2014-12-04 | 2015-03-25 | 福建星网视易信息系统有限公司 | 一种嵌入式系统中自动检测内存越界的方法及系统 |
CN108446122A (zh) * | 2018-03-22 | 2018-08-24 | 中国银行股份有限公司 | 一种参数一致性验证方法及装置 |
CN112817838A (zh) * | 2019-11-18 | 2021-05-18 | 迈普通信技术股份有限公司 | 内存泄漏信息处理方法、装置、电子设备及存储介质 |
CN113535150A (zh) * | 2021-07-29 | 2021-10-22 | 北京大学 | 一种针对dram/nvm混合内存的无内存泄漏编程方法 |
-
2005
- 2005-12-08 CN CNB2005101300860A patent/CN100487657C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461880A (zh) * | 2014-12-04 | 2015-03-25 | 福建星网视易信息系统有限公司 | 一种嵌入式系统中自动检测内存越界的方法及系统 |
CN108446122A (zh) * | 2018-03-22 | 2018-08-24 | 中国银行股份有限公司 | 一种参数一致性验证方法及装置 |
CN108446122B (zh) * | 2018-03-22 | 2021-10-29 | 中国银行股份有限公司 | 一种参数一致性验证方法及装置 |
CN112817838A (zh) * | 2019-11-18 | 2021-05-18 | 迈普通信技术股份有限公司 | 内存泄漏信息处理方法、装置、电子设备及存储介质 |
CN113535150A (zh) * | 2021-07-29 | 2021-10-22 | 北京大学 | 一种针对dram/nvm混合内存的无内存泄漏编程方法 |
CN113535150B (zh) * | 2021-07-29 | 2023-09-22 | 北京大学 | 一种针对dram/nvm混合内存的无内存泄漏编程方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100487657C (zh) | 2009-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2004090788A3 (en) | System and method for dynamically performing storage operations in a computer network | |
CN100487657C (zh) | 嵌入式系统中自动监测内存泄漏与内存越界的方法 | |
CN110750372B (zh) | 基于共享内存的日志系统及日志管理方法 | |
CN102789371A (zh) | 硬盘盘符分配方法 | |
CN101145129A (zh) | 一种嵌入式系统内存写越界的检测方法及系统 | |
CN111324451A (zh) | 一种基于lte协议栈的内存块越界的定位方法及其系统 | |
CN100442783C (zh) | 基于现场可编程逻辑阵列的读写缓存单元的方法及装置 | |
CN100530110C (zh) | 嵌入式系统中自动监测内存泄漏与内存越界的系统 | |
US20120144080A1 (en) | Method and Device for Monitoring Running State of Card | |
CN1979428A (zh) | 自动释放嵌入式系统中应用程序模块泄漏内存的系统 | |
CN104951370B (zh) | 一种内存管理方法及装置 | |
CN101645802B (zh) | 内容控制方法及装置 | |
CN106326014A (zh) | 一种资源访问方法及装置 | |
CN102323886B (zh) | 用于向终端写入特定信息的方法、装置和系统 | |
CN1963810A (zh) | 在Flash存储介质上的关于文件分配表的缓存实现方法 | |
CN105389216A (zh) | 一种剪切板数据缓存处理方法、装置和电子设备 | |
CN100462925C (zh) | 自动释放嵌入式系统中应用程序模块泄漏内存的方法 | |
CN1492330A (zh) | 通用Windows程序运行日志信息记录方法 | |
CN101923517B (zh) | 一种缓冲区管理方法及系统 | |
CN1975701B (zh) | 主机驱动外设的方法及系统 | |
CN101211306A (zh) | 固态存储装置的寿命警示装置及其方法 | |
CN106406771A (zh) | 日志记录方法及日志记录器 | |
CN109254880B (zh) | 一种处理数据库宕机的方法及装置 | |
CN102769663A (zh) | 一种传递信息的服务器及方法、信息传递系统 | |
CN101751283A (zh) | 虚拟机监视器,虚拟机系统及客户操作系统状态获取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090513 Termination date: 20141208 |
|
EXPY | Termination of patent right or utility model |