亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法

文檔序號:6651320閱讀:305來源:國知局
專利名稱:嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,屬于計算機(jī)技術(shù)領(lǐng)域。
背景技術(shù)
嵌入式系統(tǒng)是一種資源比較受限的系統(tǒng),資源要比桌面PC更為寶貴,因而內(nèi)存有效使用的重要性勿庸置疑。如何利用好有限的內(nèi)存發(fā)揮最大效能,就成了嵌入式系統(tǒng)進(jìn)一步發(fā)展的問題關(guān)鍵。
然而,不恰當(dāng)?shù)膬?nèi)存操作通常阻礙了內(nèi)存的使用,如“內(nèi)存泄漏”,也即不能正確地釋放已分配的動態(tài)內(nèi)存,就是一種非常難于檢測的內(nèi)存錯誤,持續(xù)的內(nèi)存泄漏會使程序性能下降到最終完全不能運(yùn)行,進(jìn)而影響到所有其它有動態(tài)內(nèi)存需求的程序,在某些相對簡單的嵌入式平臺上甚至?xí)恋K操作系統(tǒng)的運(yùn)轉(zhuǎn);又如“內(nèi)存越界”,一種不合法的內(nèi)存操作,極可能破壞到本程序中正在使用的其它數(shù)據(jù),嚴(yán)重的時候還可能對其它正在運(yùn)行的程序甚至整個系統(tǒng)造成影響。
因此如何有效地監(jiān)測內(nèi)存泄漏與內(nèi)存越界是亟待解決的一個問題。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提出一種能夠自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,使得嵌入式系統(tǒng)中不恰當(dāng)?shù)膬?nèi)存操作能夠及時發(fā)現(xiàn),有利于嵌入式系統(tǒng)中有限內(nèi)存的效率使用。
本發(fā)明是通過下述技術(shù)手段來實(shí)現(xiàn)的一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,包括以下步驟
(a)進(jìn)入應(yīng)用程序模塊時,對該應(yīng)用程序模塊設(shè)置身份標(biāo)識、以及內(nèi)存使用情況標(biāo)識,同時建立若干個空的內(nèi)存地址索引項(xiàng),每一個內(nèi)存地址索引項(xiàng)指向一個內(nèi)存索引地址;(b)應(yīng)用程序模塊利用空閑的內(nèi)存地址索引項(xiàng)申請空閑內(nèi)存塊,記錄該應(yīng)用程序模塊所使用內(nèi)存塊的索引地址及其大??;(c)應(yīng)用程序模塊結(jié)束操作,判斷申請的內(nèi)存索引地址處的內(nèi)存塊大小與申請的內(nèi)存塊大小是否相同,如果不相同,則發(fā)出內(nèi)存越界錯誤報警提示;(d)應(yīng)用程序模塊退出時,查找該應(yīng)用程序模塊申請內(nèi)存對應(yīng)的所有內(nèi)存索引項(xiàng),如果存在非空內(nèi)存索引項(xiàng),則發(fā)出內(nèi)存泄漏錯誤報警提示。
進(jìn)一步地,所述的步驟(a)中,內(nèi)存索引為數(shù)組,數(shù)組大小為應(yīng)用程序模塊的最大使用值。
進(jìn)一步地,所述的步驟(a)中,內(nèi)存索引為動態(tài)鏈表形式,在內(nèi)存申請時自動添加。
進(jìn)一步地,所述的步驟(b)中,申請內(nèi)存塊的大小為應(yīng)用程序模塊運(yùn)行所需內(nèi)存與內(nèi)存索引地址指針長度之和。
更進(jìn)一步地,所述的內(nèi)存索引地址指針長度為4。
進(jìn)一步地,所述的步驟(c)中,釋放內(nèi)存塊的大小為釋放內(nèi)存塊與內(nèi)存索引地址指針長度之和。
更進(jìn)一步地,所述的內(nèi)存索引地址指針長度為4。
本發(fā)明所提出的自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,使得嵌入式系統(tǒng)中不恰當(dāng)?shù)膬?nèi)存操作能夠及時發(fā)現(xiàn),有利于嵌入式系統(tǒng)中有限內(nèi)存的高效率使用。


圖1為本發(fā)明具體實(shí)施例中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法的實(shí)現(xiàn)流程圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步的介紹,但不作為對本發(fā)明的限定。
參考圖1所示,為一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法的流程圖,該方法實(shí)現(xiàn)過程中包括如下步驟步驟101進(jìn)入應(yīng)用程序模塊M時,初始化一塊區(qū)域,該區(qū)域包括模塊M的內(nèi)存控制區(qū)和內(nèi)存索引區(qū),其中內(nèi)存控制區(qū)用于保存模塊M的ID標(biāo)識,模塊M對內(nèi)存的使用情況等;內(nèi)存索引區(qū)記錄模塊M分配的內(nèi)存地址,該區(qū)域包括多個內(nèi)存索引項(xiàng),每一個內(nèi)存索引項(xiàng)指向一個內(nèi)存地址,初始狀態(tài)時,內(nèi)存索引項(xiàng)均置為空閑。內(nèi)存索引區(qū)可以是數(shù)組,數(shù)組的大小根據(jù)模塊M對內(nèi)存的使用情況確定一個合理的最大值;也可以是鏈表的形式,在模塊M申請內(nèi)存的時候動態(tài)的添加。
步驟102應(yīng)用程序模塊M啟動后,申請大小為Size的內(nèi)存,執(zhí)行其操作進(jìn)程,具體實(shí)現(xiàn)過程如下(1)在模塊M的內(nèi)存索引區(qū)中查找一個空閑的內(nèi)存索引項(xiàng)S1,該內(nèi)存索引項(xiàng)S1指向的內(nèi)存索引地址為DS1;(2)通過系統(tǒng)提供的內(nèi)存分配函數(shù)申請大小為Size+Head的一個內(nèi)存塊D1,其中Head的大小為內(nèi)存地址指針的長度,一般為4,該內(nèi)存塊D1對應(yīng)的內(nèi)存索引地址為DS1。
此時,模塊內(nèi)存控制區(qū)中對應(yīng)記錄模塊M對內(nèi)存的使用情況,包括使用地址、占用內(nèi)存塊大小。
步驟103應(yīng)用程序模塊M完成操作后,釋放內(nèi)存P,具體實(shí)現(xiàn)過程如下讀取P-Head處的內(nèi)存索引地址DS1,如果內(nèi)存索引地址DS1處的內(nèi)存塊D1的大小等于內(nèi)存塊P-Head的大小,釋放內(nèi)存塊P-Head,設(shè)置DS1的內(nèi)容為空,繼續(xù)執(zhí)行下一步驟;如果內(nèi)存塊D1的大小不等于內(nèi)存塊P-Head的大小,說明需要釋放的內(nèi)存P地址是錯誤的或者是該內(nèi)存塊遭到破壞,進(jìn)行內(nèi)存越界報警,并報告內(nèi)存釋放錯誤。
步驟104應(yīng)用程序模塊M退出進(jìn)程,判斷其是否存在泄漏內(nèi)存,如果存在,繼續(xù)釋放泄漏內(nèi)存空間,該操作的實(shí)現(xiàn)過程如下查找應(yīng)用程序模塊M對應(yīng)的所有內(nèi)存索引項(xiàng),如果有某個內(nèi)存索引項(xiàng)不為空,說明該應(yīng)用程序模塊M有內(nèi)存泄漏,進(jìn)行內(nèi)存泄漏報警,并報告內(nèi)存泄漏地址。
當(dāng)出現(xiàn)內(nèi)存越界報警或者內(nèi)存泄漏報警后,可以由其他程序或用戶來判斷是否對錯誤報警作出處理,由此實(shí)現(xiàn)對內(nèi)存更加可靠的操作。防止了為滿足某種特殊要求而設(shè)計不釋放某些內(nèi)存時,誤認(rèn)為內(nèi)存操作錯誤自動修復(fù)錯誤的發(fā)生。
權(quán)利要求
1.一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,包括以下步驟(a)進(jìn)入應(yīng)用程序模塊時,對該應(yīng)用程序模塊設(shè)置身份標(biāo)識、以及內(nèi)存使用情況標(biāo)識,同時建立若干個空的內(nèi)存地址索引項(xiàng),每一個內(nèi)存地址索引項(xiàng)指向一個內(nèi)存索引地址;(b)應(yīng)用程序模塊利用空閑的內(nèi)存地址索引項(xiàng)申請空閑內(nèi)存塊,記錄該應(yīng)用程序模塊所使用內(nèi)存塊的索引地址及其大?。?c)應(yīng)用程序模塊結(jié)束操作,判斷申請的內(nèi)存索引地址處的內(nèi)存塊大小與申請的內(nèi)存塊大小是否相同,如果不相同,則發(fā)出內(nèi)存越界錯誤報警提示;(d)應(yīng)用程序模塊退出時,查找該應(yīng)用程序模塊申請內(nèi)存對應(yīng)的所有內(nèi)存索引項(xiàng),如果存在非空內(nèi)存索引項(xiàng),則發(fā)出內(nèi)存泄漏錯誤報警提示。
2.如權(quán)利要求1所述的一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,其特征在于所述的步驟(a)中,內(nèi)存索引為數(shù)組,數(shù)組大小為應(yīng)用程序模塊的最大使用值。
3.如權(quán)利要求1所述的一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,其特征在于所述的步驟(a)中,內(nèi)存索引為動態(tài)鏈表形式,在內(nèi)存申請時自動添加。
4.如權(quán)利要求1所述的一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,其特征在于所述的步驟(b)中,申請內(nèi)存塊的大小為應(yīng)用程序模塊運(yùn)行所需內(nèi)存與內(nèi)存索引地址指針長度之和。
5.如權(quán)利要求4所述的一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,其特征在于所述的內(nèi)存索引地址指針長度為4。
6.如權(quán)利要求1所述的一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,其特征在于所述的步驟(c)中,釋放內(nèi)存塊的大小為釋放內(nèi)存塊與內(nèi)存索引地址指針長度之和。
7.如權(quán)利要求6所述的一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,其特征在于所述的內(nèi)存索引地址指針長度為4。
全文摘要
本發(fā)明公開了一種嵌入式系統(tǒng)中自動監(jiān)測內(nèi)存泄漏與內(nèi)存越界的方法,包括以下步驟(a)進(jìn)入應(yīng)用程序模塊時,對該模塊設(shè)置身份標(biāo)識、內(nèi)存使用情況標(biāo)識,同時建立若干個空的內(nèi)存地址索引項(xiàng),每一個內(nèi)存地址索引項(xiàng)指向一個內(nèi)存索引地址;(b)應(yīng)用程序模塊利用空閑的內(nèi)存地址索引項(xiàng)申請空閑內(nèi)存塊,記錄該應(yīng)用程序模塊所使用內(nèi)存塊的索引地址及其大?。?c)應(yīng)用程序模塊結(jié)束操作,如果申請的內(nèi)存索引地址處的內(nèi)存塊大小與申請的內(nèi)存塊大小不相同,則發(fā)出內(nèi)存越界錯誤報警;(d)應(yīng)用程序模塊退出時,如果存在非空內(nèi)存索引項(xiàng),發(fā)出內(nèi)存泄漏錯誤報警。本發(fā)明使得嵌入式系統(tǒng)中不恰當(dāng)?shù)膬?nèi)存操作能夠及時發(fā)現(xiàn),有利于內(nèi)存的高效使用。
文檔編號G06F12/02GK1979427SQ20051013008
公開日2007年6月13日 申請日期2005年12月8日 優(yōu)先權(quán)日2005年12月8日
發(fā)明者蔣敏 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1