[發明專利]內存管理方法有效
| 申請號: | 202010753221.1 | 申請日: | 2020-07-30 |
| 公開(公告)號: | CN112100089B | 公開(公告)日: | 2023-08-01 |
| 發明(設計)人: | 郝強;潘浩;張放;李曉飛;張德兆;王肖;霍舒豪 | 申請(專利權)人: | 重慶蘭德適普信息科技有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02 |
| 代理公司: | 北京慧誠智道知識產權代理事務所(特殊普通合伙) 11539 | 代理人: | 李楠 |
| 地址: | 401122 重慶*** | 國省代碼: | 重慶;50 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 內存 管理 方法 | ||
本發明提供了一種內存管理方法,包括:根據模塊當前的使用個數,確定內存分區的個數;根據模塊的歷史內存,確定每個模塊的內存分區大小;將內存分區的地址與模塊對應的線程ID進行綁定;接收內存申請函數;內存申請函數包括第一線程ID;查詢第一線程ID是否對應內存分區的地址;當第一線程ID對應內存分區的地址時,確定目標內存分區,并在目標內存分區中申請內存。從而減少內存申請與釋放不匹配導致的內存重復釋放或者內存泄漏問題,保證了內存的安全使用。
技術領域
本發明涉及內存技術領域,尤其涉及一種內存管理方法。
背景技術
隨著無人車技術的快速發展,自動駕駛軟件的復雜度也越來越高。自動駕駛軟件一般采用C++語言開發,為了適應自動駕駛面臨的復雜場景,其軟件需要使用多種第三方算法或組件。因此,需要使用內存分配機制,對多種算法分配內存,傳統的內存分配機制,一般為動態內存申請與釋放機制(new與delete)。
但是,傳統的內存分配機制對內存的使用限制較多,錯誤使用時會造成系統崩潰、數據被修改等嚴重安全問題。
首先,傳統內存分配機制是基于內存塊的管理。使用者需要自己負責內存的申請與釋放。如果使用者忘記了釋放,這塊內存就會成為其他人無法申請的死內存,這就是常見的內存泄露問題。
其次,由于內存分配機制依賴的標識符是一個內存地址,使用者無從判斷指針指向的內存是否已經被釋放了。如果使用者兩次釋放了同一塊內存,會造成內存管理模塊的崩潰。
最后,由于內存分配機制依賴的標識符是一個內存地址,而釋放內存時該內存地址仍然存在,因此如果在后面繼續使用該地址指向的內存塊,則會造成內存訪問異常。對于內存管理模塊來講,這塊內存已經被釋放了,它就有可能被分配給其他模塊使用。如果此時原來的使用者繼續根據該指針進行操作,則會修改其他模塊的數據。
因此,傳統的內存分配機制難以滿足內存模塊隔離性與安全性的需要。可以通過下面兩種方法來避免內存分配機制發生以上問題。
第一、申請釋放記錄。記錄每一次申請與釋放操作,通過匹配記錄中的申請與釋放關系,發現是否有內存未釋放。
第二、避免使用動態內存分配。改造代碼,避免使用動態內存申請,所需內存預先分配。
但是,對于第一種方法,只能發現內存泄露問題,不能避免內存兩次釋放問題。
對于第二種方法,會占用大量內存,復雜系統無法使用,且需要對現有算法代碼進行改造,工作量巨大。
發明內容
本發明實施例的目的是提供一種內存管理方法,以解決現有技術中的內存泄漏或者占用大量內存,復雜系統無法使用的問題。
為解決上述問題,第一方面,本發明提供了一種內存管理方法,所述內存管理系統方法:
根據模塊當前的使用個數,確定內存分區的個數;
根據所述模塊的歷史內存,確定每個模塊的內存分區大小;
將所述內存分區的地址與模塊對應的線程ID進行綁定;
接收內存申請函數;所述內存申請函數包括第一線程ID;
查詢所述第一線程ID是否對應內存分區的地址;
當所述第一線程ID對應內存分區的地址時,確定目標內存分區,并在目標內存分區中申請內存。
在一種可能的實現方式中,所述方法還包括:
接收內存釋放函數;所述內存釋放函數包括第二線程ID;
查詢所述第二線程ID是否對應內存分區;
當所述第二線程ID對應內存分區時,不執行內存釋放操作。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于重慶蘭德適普信息科技有限公司,未經重慶蘭德適普信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010753221.1/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種錐型絕緣線圈的制作方法
- 下一篇:一種介入式給藥引流治療裝置





