内存分配方法、装置、计算机设备和计算机可读存储介质制造方法及图纸

技术编号:33436624 阅读:15 留言:0更新日期:2022-05-19 00:25
本申请提供一种内存分配方法、装置、计算机设备和计算机可读存储介质,属于内存管理技术领域。所述方法包括:根据待存储数据的长度确定待分配内存的目标等级;根据待分配内存的目标等级,确定与目标等级对应的目标链表,目标链表包括至少一个指针和链表头,各指针分别指向一内存块,各指针用于指示目标链表中的各内存块的地址,链表头为各指针中的第一个指针,链表头用于指向目标链表中的各内存块中的首个空内存块;根据链表头确定目标内存块;根据内存分配指令将待存储数据存储至目标内存块,并将链表头指向目标内存块之后的首个空内存块。本申请可以减少内存碎片的产生,进而可以达到提升内存分配的效率的效果。以达到提升内存分配的效率的效果。以达到提升内存分配的效率的效果。

【技术实现步骤摘要】
内存分配方法、装置、计算机设备和计算机可读存储介质


[0001]本申请涉及内存管理
,具体而言,涉及一种内存分配方法、装置、计算机设备和计算机可读存储介质。

技术介绍

[0002]随着科技的发展,各种各样的应用程序进入了人们的生活,给人们带来了很大的便利。在这些应用程序需要使用内存的情况下,一般都会通过调用系统的内存分配或内存释放函数来实现内存的管理。
[0003]相关技术中,在分配内存时常会使用Malloc函数,比如,在分配内存时先从堆列表中取出一个堆,并从这个堆中取出一个内存块A,在内存块A的大小大于或等于需要分配的内存大小时,将内存块A拆分成内存块B和内存块C,其中内存块B的大小与需要分配的内存大小相同,内存块C的大小为内存块A的大小减去内存块B的大小得到的差值,再将内存块B作为分配的内存块并将内存块B的地址返回,这样就完成了内存的分配。
[0004]然而,这种方法会存在导致系统内存碎片增加的问题,进而导致管理内存的效率很低。

技术实现思路

[0005]本申请的目的在于提供一种内存分配方法、装置、设备和计算机可读存储介质,可以减少内存碎片的产生,进而可以达到提升内存分配的效率的效果。
[0006]本申请的实施例是这样实现的:
[0007]本申请实施例的第一方面,提供一种内存分配方法,包括:
[0008]根据待存储数据的长度确定待分配内存的目标等级;
[0009]根据所述待分配内存的目标等级,确定所述目标等级对应的目标链表,所述目标链表包括至少一个指针和链表头,各指针分别指向一内存块,各指针用于指示所述目标链表中的各内存块的地址,所述链表头为各指针中的第一个指针,所述链表头用于指向所述目标链表中的各内存块中的首个空内存块;
[0010]根据所述链表头确定目标内存块;
[0011]根据内存分配指令将所述待存储数据存储至所述目标内存块,并将所述链表头指向所述目标内存块之后的首个空内存块。
[0012]可选地,所述根据内存分配指令将所述待存储数据存储至所述链表头指向的目标内存块,包括:
[0013]根据内存分配指令将所述待存储数据的长度存储至所述目标内存块的起始位置开始的预设长度的内存单元中;
[0014]将所述待存储数据存储至所述预设长度的内存单元之后的内存单元中。
[0015]可选地,所述根据所述待分配内存的目标等级,确定所述目标等级对应的目标链表之前,还包括:
[0016]根据所述待分配内存的目标等级,确定所述目标等级对应的目标内存块容量;
[0017]根据所述目标内存块容量,从内存中确定与所述目标内存块容量匹配的至少一个空内存块;
[0018]建立所述目标等级对应的目标链表,将所述目标链表的各指针分别指向与所述目标内存块容量匹配的各空内存块,并且,将所述目标链表的链表头指向与所述目标内存块容量匹配的各空内存块中的首个空内存块。
[0019]可选地,所述根据待存储数据的长度确定待分配内存的目标等级,包括:
[0020]对所述长度的值与预设长度值进行求和,得到待分配值;
[0021]根据所述待分配值和内存块链表的阶梯值,确定所述待分配内存的目标等级,其中,所述阶梯值为两个相邻等级的所述内存块链表的最大存储阈值的差值。
[0022]可选地,所述根据所述待分配值和内存块链表的阶梯值,确定所述待分配内存的目标等级,包括:
[0023]确定所述待分配值与所述阶梯值的目标比值;
[0024]将所述目标比值对应的内存等级作为所述待分配内存的目标等级。
[0025]可选地,所述确定所述待分配值与所述阶梯值的目标比值,包括:
[0026]若所述待分配值与所述阶梯值的初始比值为非整数,则对所述初始比值取整,得到所述目标比值。
[0027]可选地,所述根据内存分配指令将所述待存储数据存储至所述目标内存块之后,所述方法还包括:
[0028]根据针对所述目标内存块的内存释放指令,删除所述目标内存块中所存储的数据;
[0029]更新所述目标链表,以使得所述目标内存块作为空内存块插入所述目标链表中。
[0030]可选地,所述更新所述目标链表,包括:
[0031]将所述目标链表的链表头指向所述目标内存块。
[0032]可选地,所述方法还包括:
[0033]确定所述目标链表中的空内存块的个数;
[0034]若所述目标链表中的空内存块的个数大于或等于预设阈值,则释放依次排列在所述目标链表中的至少一个空内存块。
[0035]可选地,所述方法还包括:
[0036]若所述目标链表为空,则开辟多个内存块,并将所述多个内存块中的一个内存块作为所述目标内存块;
[0037]将所述多个内存块中的其它内存块插入所述目标链表。
[0038]可选地,所述根据所述链表头确定目标内存块,包括:
[0039]确定所述目标链表的头节点,并根据所述目标链表的头节点确定所述目标链表的所述链表头;
[0040]将所述链表头指向的内存块作为所述目标内存块。
[0041]本申请实施例的第二方面,提供了一种内存分配装置,所述内存分配装置包括:
[0042]第一确定模块,用于根据待存储数据的长度确定待分配内存的目标等级;
[0043]第二确定模块,用于根据所述待分配内存的目标等级,确定所述目标等级对应的
目标链表;
[0044]第三确定模块,用于根据所述链表头确定目标内存块;
[0045]存储处理模块,用于根据内存分配指令将所述待存储数据存储至所述目标内存块,并将所述链表头指向所述目标内存块之后的首个空内存块。
[0046]可选地,所述第二确定模块还用于根据所述内存分配指令将所述待存储数据的长度存储至所述目标内存块的起始位置开始的预设长度的内存单元中;
[0047]将所述待存储数据存储至所述预设长度的内存单元之后的内存单元中。
[0048]可选地,所述第二确定模块还用于根据所述待分配内存的目标等级,确定所述目标等级对应的目标内存块容量;
[0049]根据所述目标内存块容量,从内存中确定与所述目标内存块容量匹配的至少一个空内存块;
[0050]建立所述目标等级对应的目标链表,将所述目标链表的各指针分别指向与所述目标内存块容量匹配的各空内存块,并且,将所述目标链表的链表头指向与所述目标内存块容量匹配的各空内存块中的首个空内存块。
[0051]可选地,所述第一确定模块还用于对所述长度的值与预设长度值进行求和,得到待分配值;
[0052]根据所述待分配值和内存块链表的阶梯值,确定所述待分配内存的目标等级。
[0053]可选地,所述第一确定模块还用于确定所述待分配值与所述阶梯值的目标比值;
[0054]将所述目标比值对应的内存等级作为所述待分配内存的目标等级。
[0055]可选地,所述第一确定本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存分配方法,其特征在于,包括:根据待存储数据的长度确定待分配内存的目标等级;根据所述待分配内存的目标等级,确定与所述目标等级对应的目标链表,所述目标链表包括至少一个指针和链表头,各指针分别指向一内存块,各指针用于指示所述目标链表中的各内存块的地址,所述链表头为各指针中的第一个指针,所述链表头用于指向所述目标链表中的各内存块中的首个空内存块;根据所述链表头确定目标内存块;根据内存分配指令将所述待存储数据存储至所述目标内存块,并将所述链表头指向所述目标内存块之后的首个空内存块。2.如权利要求1所述的内存分配方法,其特征在于,所述根据内存分配指令将所述待存储数据存储至所述链表头指向的目标内存块,包括:根据所述内存分配指令将所述待存储数据的长度存储至所述目标内存块的起始位置开始的预设长度的内存单元中;将所述待存储数据存储至所述预设长度的内存单元之后的内存单元中。3.如权利要求1所述的内存分配方法,其特征在于,所述根据所述待分配内存的目标等级,确定所述目标等级对应的目标链表之前,还包括:根据所述待分配内存的目标等级,确定所述目标等级对应的目标内存块容量;根据所述目标内存块容量,从内存中确定与所述目标内存块容量匹配的至少一个空内存块;建立所述目标等级对应的目标链表,将所述目标链表的各指针分别指向与所述目标内存块容量匹配的各空内存块,并且,将所述目标链表的链表头指向与所述目标内存块容量匹配的各空内存块中的首个空内存块。4.如权利要求3所述的内存分配方法,其特征在于,所述根据待存储数据的长度确定待分配内存的目标等级,包括:对所述长度的值与预设长度值进行求和,得到待分配值;根据所述待分配值和内存块链表的阶梯值,确定所述待分配内存的目标等级,其中,所述阶梯值为两个相邻等级的所述内存块链表的最大存储阈值的差值。5.如权利要求4所述的内存分配方法,其特征在于,所述根据所述待分配值和内存块链表的阶梯值,确定所述待分配内存的目标等级,包括:确定所述待分配值与所述阶梯值的目标比值;将所述目标比值对应的内存等级作为所述待分配内存的目标等级。6.如权利要求5所述的内存分配方法,其特征在于,所述确定所述待分配值与所述阶梯值的目标比值,包括:若所述待分配值与所述阶梯值的初始比值为非整数,则对所述初始比值取整...

【专利技术属性】
技术研发人员:王耿曹崇瑞顾费勇胡志敏
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1