[發明專利]內存分配方法、裝置、計算機設備和計算機可讀存儲介質在審
| 申請號: | 202210082263.6 | 申請日: | 2022-01-24 |
| 公開(公告)號: | CN114490060A | 公開(公告)日: | 2022-05-13 |
| 發明(設計)人: | 王耿;曹崇瑞;顧費勇;胡志敏 | 申請(專利權)人: | 網易(杭州)網絡有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50;G06F12/02 |
| 代理公司: | 北京超凡宏宇專利代理事務所(特殊普通合伙) 11463 | 代理人: | 高燕 |
| 地址: | 310052 浙江省*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 內存 分配 方法 裝置 計算機 設備 可讀 存儲 介質 | ||
本申請提供一種內存分配方法、裝置、計算機設備和計算機可讀存儲介質,屬于內存管理技術領域。所述方法包括:根據待存儲數據的長度確定待分配內存的目標等級;根據待分配內存的目標等級,確定與目標等級對應的目標鏈表,目標鏈表包括至少一個指針和鏈表頭,各指針分別指向一內存塊,各指針用于指示目標鏈表中的各內存塊的地址,鏈表頭為各指針中的第一個指針,鏈表頭用于指向目標鏈表中的各內存塊中的首個空內存塊;根據鏈表頭確定目標內存塊;根據內存分配指令將待存儲數據存儲至目標內存塊,并將鏈表頭指向目標內存塊之后的首個空內存塊。本申請可以減少內存碎片的產生,進而可以達到提升內存分配的效率的效果。
技術領域
本申請涉及內存管理技術領域,具體而言,涉及一種內存分配方法、裝置、計算機設備和計算機可讀存儲介質。
背景技術
隨著科技的發展,各種各樣的應用程序進入了人們的生活,給人們帶來了很大的便利。在這些應用程序需要使用內存的情況下,一般都會通過調用系統的內存分配或內存釋放函數來實現內存的管理。
相關技術中,在分配內存時常會使用Malloc函數,比如,在分配內存時先從堆列表中取出一個堆,并從這個堆中取出一個內存塊A,在內存塊A的大小大于或等于需要分配的內存大小時,將內存塊A拆分成內存塊B和內存塊C,其中內存塊B的大小與需要分配的內存大小相同,內存塊C的大小為內存塊A的大小減去內存塊B的大小得到的差值,再將內存塊B作為分配的內存塊并將內存塊B的地址返回,這樣就完成了內存的分配。
然而,這種方法會存在導致系統內存碎片增加的問題,進而導致管理內存的效率很低。
發明內容
本申請的目的在于提供一種內存分配方法、裝置、設備和計算機可讀存儲介質,可以減少內存碎片的產生,進而可以達到提升內存分配的效率的效果。
本申請的實施例是這樣實現的:
本申請實施例的第一方面,提供一種內存分配方法,包括:
根據待存儲數據的長度確定待分配內存的目標等級;
根據所述待分配內存的目標等級,確定所述目標等級對應的目標鏈表,所述目標鏈表包括至少一個指針和鏈表頭,各指針分別指向一內存塊,各指針用于指示所述目標鏈表中的各內存塊的地址,所述鏈表頭為各指針中的第一個指針,所述鏈表頭用于指向所述目標鏈表中的各內存塊中的首個空內存塊;
根據所述鏈表頭確定目標內存塊;
根據內存分配指令將所述待存儲數據存儲至所述目標內存塊,并將所述鏈表頭指向所述目標內存塊之后的首個空內存塊。
可選地,所述根據內存分配指令將所述待存儲數據存儲至所述鏈表頭指向的目標內存塊,包括:
根據內存分配指令將所述待存儲數據的長度存儲至所述目標內存塊的起始位置開始的預設長度的內存單元中;
將所述待存儲數據存儲至所述預設長度的內存單元之后的內存單元中。
可選地,所述根據所述待分配內存的目標等級,確定所述目標等級對應的目標鏈表之前,還包括:
根據所述待分配內存的目標等級,確定所述目標等級對應的目標內存塊容量;
根據所述目標內存塊容量,從內存中確定與所述目標內存塊容量匹配的至少一個空內存塊;
建立所述目標等級對應的目標鏈表,將所述目標鏈表的各指針分別指向與所述目標內存塊容量匹配的各空內存塊,并且,將所述目標鏈表的鏈表頭指向與所述目標內存塊容量匹配的各空內存塊中的首個空內存塊。
可選地,所述根據待存儲數據的長度確定待分配內存的目標等級,包括:
對所述長度的值與預設長度值進行求和,得到待分配值;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于網易(杭州)網絡有限公司,未經網易(杭州)網絡有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210082263.6/2.html,轉載請聲明來源鉆瓜專利網。





