[發明專利]一種嵌入式系統內存泄露的檢測方法有效
| 申請號: | 200910256476.0 | 申請日: | 2009-12-29 |
| 公開(公告)號: | CN101763305A | 公開(公告)日: | 2010-06-30 |
| 發明(設計)人: | 田友強 | 申請(專利權)人: | 青島海信寬帶多媒體技術有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 青島聯智專利商標事務所有限公司 37101 | 代理人: | 李升娟 |
| 地址: | 266100 山*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 嵌入式 系統 內存 泄露 檢測 方法 | ||
技術領域
本發明涉及一種內存處理方法,具體地說,是涉及一種對嵌入式系統內存 泄露進行檢測的方法,屬于嵌入式系統技術領域。?
背景技術
對于內存泄露,一般是指堆內存的泄露。堆內存,是指應用程序在運行過 程中,利用一些特定的函數從堆中分配的、而在使用完畢后再通過特定的函數 予以釋放的內存。如果應用程序在使用完堆內存后沒有將其釋放,則這塊內存 就不能被再次使用,就認為這塊內存泄露了。
根據其發生的方式來分,內存泄露可以分為下述4類:
(1)常發性內存泄露:發生內存泄露的函數代碼會被多次執行到,每次被 執行的時候都會導致一塊內存泄露。
(2)偶發性內存泄露:發生內存泄露的函數代碼只有在某些特定環境或操 作過程下才會發生。
常發性和偶發性是相對的,對于特定的環境,偶發性也許就會變成常發性。
(3)一次性內存泄露:發生內存泄露的函數代碼只會被執行一次;或者由 于算法上的缺陷,導致總會有一塊且僅有一塊內存發生泄露。比如,在類的構 造函數中分配內存,在析構函數中卻沒有釋放該內存,所以內存泄露只會發生 一次。
(4)隱式內存泄露:程序在運行過程中不停地分配內存,但是直到結束的 時候才釋放內存。嚴格地說,此時并沒有發生內存泄露,因為最終程序釋放了 所有申請的內存。但是對于一個服務器程序來說,需要運行幾天、幾周甚至幾 個月,若不及時釋放內存,也可能導致最終耗盡系統的所有內存,因此,對于 這類內存泄露,稱之為隱式內存泄露。
內存泄露時,將會導致內存空間的浪費。一個小的內存泄露可能不需要太 注意,但是若程序泄露大塊內存,或者漸增式的泄露內存會引起下述現象:先 是系統性能降低,然后引起復雜的內存耗盡錯誤;最壞的情況是,一個內存泄 露程序可能用完了非常多的內存而引起其他程序出錯,而用戶不能知道錯誤到 底來自哪里。另外,一個看上去危害不大的內存泄露,可能是另一個問題的先 兆。因此,要盡量避免內存泄露現象的發生。
要避免內存泄露,除了要求編程人員具有良好的編碼習慣和編碼規范之外, 關鍵還要從程序代碼上入手,對內存泄露進行高效、可靠的檢測。目前常用的 內存泄露檢測方法是:為內存分配函數和內存釋放函數提供debug版本,跟蹤 內存的分配和釋放;程序調試人員手動調用或者在程序結束時自動調用內存泄 露信息顯示函數,根據跟蹤結果顯示內存地址、內存塊的大小及內存中的內容 等信息。但是,這種傳統的內存泄露檢測方法在嵌入式系統中使用時存在下述 缺陷:
第一,嵌入式系統中的軟件一般是啟動后一直在運行,通過斷電方式結束 程序的運行,因此,無法預知程序何時結束,也就無法執行相應的內存泄露檢 測程序。
第二,嵌入式系統中內存的分配和釋放,不一定是在同一個文件中,也不 一定是在同一個模塊中,也可能分配后永遠不釋放,這依賴于設計時的邏輯, 而內存泄露檢測模塊無法知曉。因此,內存檢測時無法提供準確的內存泄露信 息,可能會發生內存泄露誤報的問題。
第三,在嵌入式系統中無法檢測內存誤釋放的問題,由于指針使用錯誤, 有可能會在不應該釋放內存的地方進行了釋放,從而可能導致程序運行錯誤或 者崩潰。
發明內容
本發明針對現有技術中的內存泄露檢測方法在嵌入式系統軟件開發過程中 存在的配置不靈活、使用不方便、容易發生內存泄露誤報和誤釋放的問題,提 供了一種內存泄露的檢測方法,利用該方法,可實現對嵌入式系統內存泄露的 分區檢測,方法使用靈活、檢測效率較高。
為解決上述技術問題,本發明采用以下技術方案予以實現:
一種嵌入式系統內存泄露的檢測方法,包括跟蹤內存分配的過程和跟蹤內 存釋放的過程的步驟,以及根據跟蹤結果進行內存泄露檢測的步驟;
所述內存分配的過程包括通過內存分配函數的參數獲取該內存分配函數分 配的內存所對應的內存釋放范圍類型信息及內存釋放位置信息并進行保存的步 驟以及下述步驟:
通過內存分配函數的參數獲取并保存內存分配函數所在的文件名、代碼行 號及函數名信息;
查找與所述文件名和代碼行號相對應的最大內存分配編號,將所述最大內 存分配編號加1,作為當前分配的內存的內存分配編號;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于青島海信寬帶多媒體技術有限公司,未經青島海信寬帶多媒體技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910256476.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:按鈕裝置及電子裝置
- 下一篇:用于鎖相環的軟基準切換





