一种内存处理方法及装置制造方法及图纸

技术编号:30330551 阅读:13 留言:0更新日期:2021-10-10 00:34
本公开提供了一种内存处理方法及装置,该方法首先响应于目标应用的内存释放请求,确定所述内存释放请求指示的第一目标内存;然后,基于当前存储的内存释放日志,确定所述第一目标内存是否已被释放;所述内存释放日志用于指示在接收所述内存释放请求之前释放的内存;最后,在所述第一目标内存已被释放的情况下,停止释放所述第一目标内存。本公开实施例在检测到内存释放请求后,通过存储的内存释放日志判断第一目标内存是否应被释放,从而阻止被释放的内存再次释放。的内存再次释放。的内存再次释放。

【技术实现步骤摘要】
一种内存处理方法及装置


[0001]本公开涉及计算机
,具体而言,涉及一种内存处理方法及装置。

技术介绍

[0002]在应用程序运行时,应用程序会向系统申请内存的使用权限,在申请得到的内存中存储变量等数据,在应用程序不再需要这些数据时,会向系统发送内存释放请求,系统响应内存释放请求,将对应的内存释放,使得被释放的内存能够被再次利用。由于一些应用程序的代码本身存在缺陷,可能会导致对一块已经被释放的内存再次进行释放,这种现象被称为内存重复释放DoubleFree,DoubleFree可能导致内存崩溃等情况。

技术实现思路

[0003]本公开实施例至少提供一种内存处理方法及装置。
[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]图1示出了本公开实施例所提供的一种内存处理方法的流程图;
[0042]图2示出了本公开实施例所提供的另一种内存处理方法的流程图;
[0043]图3示出了本公开实施例所提供的一种内存处理装置的示意图;
[0044]图4示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
[0045]为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存处理方法,其特征在于,包括:响应于目标应用的内存释放请求,确定所述内存释放请求指示的第一目标内存;基于当前存储的内存释放日志,确定所述第一目标内存是否已被释放;所述内存释放日志用于指示在接收所述内存释放请求之前释放的内存;在所述第一目标内存已被释放的情况下,停止释放所述第一目标内存。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述第一目标内存未被释放的情况下,释放所述第一目标内存,将所述第一目标内存的内存释放记录写入所述内存释放日志。3.根据权利要求1所述的方法,其特征在于,所述内存释放日志采用环形队列存储;所述方法还包括:在所述环形队列满载时,释放所述环形队列中最早存储的内存释放日志。4.根据权利要求1所述的方法,其特征在于,在响应于目标应用的内存释放请求之前,所述方法还包括:申请处于空闲状态的待分配内存,并将所述待分配内存设置为不可读写的状态;响应于所述目标应用的内存申请请求,从所述待分配内存中选取未分配的第二目标内存分配给所述目标应用,并将所述第二目标内存设置为可供所述目标应用进行读写的状态。5.根据权利要求2所述的方法,其特征在于,在释放所述第一目标内存后,所述方法还包括:将所述第一目标内存设置为不可读写的状态,将所述第一目标内存的分配信息更新为未分配。6.根据权利要求1所述的方法,其特征在于,...

【专利技术属性】
技术研发人员:庞翔宇
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:

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

1