CN100487657C - 嵌入式系统中自动监测内存泄漏与内存越界的方法 - Google Patents

嵌入式系统中自动监测内存泄漏与内存越界的方法 Download PDF

Info

Publication number
CN100487657C
CN100487657C CNB2005101300860A CN200510130086A CN100487657C CN 100487657 C CN100487657 C CN 100487657C CN B2005101300860 A CNB2005101300860 A CN B2005101300860A CN 200510130086 A CN200510130086 A CN 200510130086A CN 100487657 C CN100487657 C CN 100487657C
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.)
Expired - Fee Related
Application number
CNB2005101300860A
Other languages
English (en)
Other versions
CN1979427A (zh
Inventor
蒋敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CNB2005101300860A priority Critical patent/CN100487657C/zh
Publication of CN1979427A publication Critical patent/CN1979427A/zh
Application granted granted Critical
Publication of CN100487657C publication Critical patent/CN100487657C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种嵌入式系统中自动监测内存泄漏与内存越界的方法,包括以下步骤:(a)进入应用程序模块时,对该模块设置身份标识、内存使用情况标识,同时建立若干个空的内存地址索引项,每一个内存地址索引项指向一个内存索引地址;(b)应用程序模块利用空闲的内存地址索引项申请空闲内存块,记录该应用程序模块所使用内存块的索引地址及其大小;(c)应用程序模块结束操作,如果申请的内存索引地址处的内存块大小与申请的内存块大小不相同,则发出内存越界错误报警;(d)应用程序模块退出时,如果存在非空内存索引项,发出内存泄漏错误报警。本发明使得嵌入式系统中不恰当的内存操作能够及时发现,有利于内存的高效使用。

Description

嵌入式系统中自动监测内存泄漏与内存越界的方法
技术领域
本发明涉及一种嵌入式系统中自动监测内存泄漏与内存越界的方法,属于计算机技术领域。
背景技术
嵌入式系统是一种资源比较受限的系统,资源要比桌面PC更为宝贵,因而内存有效使用的重要性勿庸置疑。如何利用好有限的内存发挥最大效能,就成了嵌入式系统进一步发展的问题关键。
然而,不恰当的内存操作通常阻碍了内存的使用,如:“内存泄漏”,也即不能正确地释放已分配的动态内存,就是一种非常难于检测的内存错误,持续的内存泄漏会使程序性能下降到最终完全不能运行,进而影响到所有其它有动态内存需求的程序,在某些相对简单的嵌入式平台上甚至会妨碍操作系统的运转;又如“内存越界”,一种不合法的内存操作,极可能破坏到本程序中正在使用的其它数据,严重的时候还可能对其它正在运行的程序甚至整个系统造成影响。
因此如何有效地监测内存泄漏与内存越界是亟待解决的一个问题。
发明内容
本发明要解决的技术问题是:提出一种能够自动监测内存泄漏与内存越界的方法,使得嵌入式系统中不恰当的内存操作能够及时发现,有利于嵌入式系统中有限内存的效率使用。
本发明是通过下述技术手段来实现的:
一种嵌入式系统中自动监测内存泄漏与内存越界的方法,包括以下步骤:
(a)进入应用程序模块时,对该应用程序模块设置身份标识、以及内存使用情况标识,同时建立若干个空的内存地址索引项,每一个内存地址索引项指向一个内存索引地址;
(b)应用程序模块利用空闲的内存地址索引项申请空闲内存块,记录该应用程序模块所使用内存块的索引地址及其大小;
(c)应用程序模块结束操作,判断申请的内存索引地址处的内存块大小与申请的内存块大小是否相同,如果不相同,则发出内存越界错误报警提示;
(d)应用程序模块退出时,查找该应用程序模块申请内存对应的所有内存索引项,如果存在非空内存索引项,则发出内存泄漏错误报警提示。
进一步地,所述的步骤(a)中,内存索引为数组,数组大小为应用程序模块的最大使用值。
进一步地,所述的步骤(a)中,内存索引为动态链表形式,在内存申请时自动添加。
进一步地,所述的步骤(b)中,申请内存块的大小为:应用程序模块运行所需内存与内存索引地址指针长度之和。
更进一步地,所述的内存索引地址指针长度为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 (5)

1、一种嵌入式系统中自动监测内存泄漏与内存越界的方法,包括以下步骤:
(a)进入应用程序模块时,对该应用程序模块设置身份标识、以及内存使用情况标识,同时建立若干个空的内存地址索引项,每一个内存地址索引项指向一个内存索引地址;
(b)应用程序模块利用空闲的内存地址索引项申请空闲内存块,记录该应用程序模块所使用内存块的索引地址及其大小;
(c)应用程序模块结束操作,判断申请的内存索引地址处的内存块大小与申请的内存块大小是否相同,如果不相同,则发出内存越界错误报警提示;
(d)应用程序模块退出时,查找该应用程序模块申请内存对应的所有内存索引项,如果存在非空内存索引项,则发出内存泄漏错误报警提示。
2、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的步骤(a)中,内存索引为数组,数组大小为应用程序模块的最大使用值。
3、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的步骤(a)中,内存索引为动态链表形式,在内存申请时自动添加。
4、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的步骤(b)中,申请内存块的大小为:应用程序模块运行所需内存与内存索引地址指针长度之和。
5、如权利要求4所述的一种嵌入式系统中自动监测内存泄漏与内存越界的方法,其特征在于:所述的内存索引地址指针长度为4。
CNB2005101300860A 2005-12-08 2005-12-08 嵌入式系统中自动监测内存泄漏与内存越界的方法 Expired - Fee Related CN100487657C (zh)

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 CN1979427A (zh) 2007-06-13
CN100487657C true 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)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461880B (zh) * 2014-12-04 2018-01-09 福建星网视易信息系统有限公司 一种嵌入式系统中自动检测内存越界的方法及系统
CN108446122B (zh) * 2018-03-22 2021-10-29 中国银行股份有限公司 一种参数一致性验证方法及装置
CN112817838A (zh) * 2019-11-18 2021-05-18 迈普通信技术股份有限公司 内存泄漏信息处理方法、装置、电子设备及存储介质
CN113535150B (zh) * 2021-07-29 2023-09-22 北京大学 一种针对dram/nvm混合内存的无内存泄漏编程方法

Also Published As

Publication number Publication date
CN1979427A (zh) 2007-06-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) 基于共享内存的日志系统及日志管理方法
CA2496784A1 (en) Maintaining information in one or more virtual volume aggregates comprising a plurality of virtual volumes
CN102789371A (zh) 硬盘盘符分配方法
CN101145129A (zh) 一种嵌入式系统内存写越界的检测方法及系统
CN111324451A (zh) 一种基于lte协议栈的内存块越界的定位方法及其系统
CN100530110C (zh) 嵌入式系统中自动监测内存泄漏与内存越界的系统
CN102014012A (zh) 一种告警同步的方法及装置
US20120144080A1 (en) Method and Device for Monitoring Running State of Card
CN100392606C (zh) 一种定位虚拟操作系统内存泄漏的方法
CN101515242B (zh) 一种查找改写内存的任务的方法和系统
CN1979428A (zh) 自动释放嵌入式系统中应用程序模块泄漏内存的系统
CN101645802B (zh) 内容控制方法及装置
CN101937378B (zh) 一种对存储设备的数据进行备份保护的方法及计算机系统
CN106326014A (zh) 一种资源访问方法及装置
CN1963810A (zh) 在Flash存储介质上的关于文件分配表的缓存实现方法
CN105389216A (zh) 一种剪切板数据缓存处理方法、装置和电子设备
CN104951370A (zh) 一种内存管理方法及装置
CN100462925C (zh) 自动释放嵌入式系统中应用程序模块泄漏内存的方法
CN1492330A (zh) 通用Windows程序运行日志信息记录方法
CN101211306A (zh) 固态存储装置的寿命警示装置及其方法
CN109933435B (zh) 控制方法、装置及计算机设备
CN105260313B (zh) 内存泄漏检查系统及方法
CN106030544B (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