[發明專利]一種內存分配方法及裝置有效
| 申請號: | 201811333061.4 | 申請日: | 2018-11-09 |
| 公開(公告)號: | CN111177017B | 公開(公告)日: | 2022-05-27 |
| 發明(設計)人: | 陳金宏 | 申請(專利權)人: | 炬芯科技股份有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 黃志華 |
| 地址: | 519085 廣東省珠海市唐*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 內存 分配 方法 裝置 | ||
本發明公開了一種內存分配方法及裝置,該方法中,針對一個內存構建至少一個用于鏈接被分配的內存塊block的block鏈表;在所述block鏈表的基礎上,構建至少一個用于鏈接block中空閑節點的空閑節點鏈表;收到內存分配請求時,根據所述至少一個block鏈表和所述至少一個空閑節點鏈表,實現分配內存。本發明可以滿足內存分配頻率且內存需求大小不一致的需求,內存分配更加靈活,占用極少的管理空間,減少內存浪費,在分配空間時可以快速的找到合適的空間并進行分配。
技術領域
本發明涉及內存分配技術領域,尤其涉及一種內存分配方法及裝置。
背景技術
目前設備的內存分配方式一般采用靜態分配的方式,即預先為不同的內存占用類型分配固定數目固定大小的內存空間。比如為異步無鏈接鏈路ACL(AsynchronousConnectionless Link)分配6個大小固定為1024bytes的內存,然后用一個單向鏈表將它們串起來。
這種方式分配和釋放的速度最快,但是由于分配固定大小的內存空間,內存使用存在較大浪費。特別對于小型嵌入式系統來說,總共也就只有一兩百KB的隨機存儲器RAM可以使用。因此如果使用靜態分配的方式將導致有幾十KB的RAM被藍牙控制器永遠占用,內存浪費比較嚴重。
另外還有一種內存分配方式是通過系統統一的內存管理接口進行內存的申請和釋放,但系統管理的內存比較大,對內存申請和釋放的時間比較不可控,可能需要花費幾us~幾百us的時間。另外頻繁的申請和釋放也會造成系統產生大量的內存碎片,所以利用系統統一的內存管理接口行不通。
發明內容
本發明提供一種內存分配方法及裝置,在分配空間時可以快速的找到合適的空間并進行分配。
第一方面,本發明提供一種內存分配方法,該方法包括:
針對一個內存構建至少一個用于鏈接被分配的內存塊block的block鏈表;
在所述block鏈表的基礎上,構建至少一個用于鏈接block中空閑節點的空閑節點鏈表;
收到內存分配請求時,根據所述至少一個block鏈表和所述至少一個空閑節點鏈表,實現分配內存。
每個所述block鏈表對應一個頭指針,用于指向對應block鏈表中第一個被分配的block;
所述針對一個內存構建至少一個用于鏈接被分配的內存塊block的block鏈表包括:
將從所述內存中分配出的每個block連接到對應的block鏈表,所述block被劃分為至少一個節點,每個block具有指向所在block鏈表中下一個被分配block的塊指針,及指向所在block的空閑節點鏈表中第一個空閑節點的頭節點指針;
所述構建至少一個用于鏈接block中的空閑節點的空閑節點鏈表包括:
將每個block的空閑節點連接到該block的空閑節點鏈表,所述空閑節點具有指向所在空閑節點鏈表中下一個空閑節點的節點指針。
可選地,所述收到內存分配請求時,根據所述至少一個block鏈表和所述至少一個空閑節點鏈表,實現分配內存,包括:
根據所述頭指針和所述塊指針遍歷所述block鏈表查找被分配的block;
在查找到每個被分配的block時,根據所述block頭節點指針及所述block的空閑節點鏈接鏈表,遍歷查找所述block中空閑節點;
確定查找到滿足分配請求的第一空閑節點時,從該第一空閑節點中進行分配內存,并更新所述block的空閑節點鏈表。
可選地,該方法還包括:
收到初次內存分配請求時,從內存中新分配一個第一block并連接到block鏈表。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于炬芯科技股份有限公司,未經炬芯科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811333061.4/2.html,轉載請聲明來源鉆瓜專利網。





