[发明专利]一种内存处理方法及装置在审
申请号: | 202110882498.9 | 申请日: | 2021-08-02 |
公开(公告)号: | CN113485846A | 公开(公告)日: | 2021-10-08 |
发明(设计)人: | 庞翔宇 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京中知法苑知识产权代理有限公司 11226 | 代理人: | 李明 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 处理 方法 装置 | ||
本公开提供了一种内存处理方法及装置,该方法首先响应于目标应用的内存释放请求,确定所述内存释放请求指示的第一目标内存;然后,基于当前存储的内存释放日志,确定所述第一目标内存是否已被释放;所述内存释放日志用于指示在接收所述内存释放请求之前释放的内存;最后,在所述第一目标内存已被释放的情况下,停止释放所述第一目标内存。本公开实施例在检测到内存释放请求后,通过存储的内存释放日志判断第一目标内存是否应被释放,从而阻止被释放的内存再次释放。
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种内存处理方法及装置。
背景技术
在应用程序运行时,应用程序会向系统申请内存的使用权限,在申请得到的内存中存储变量等数据,在应用程序不再需要这些数据时,会向系统发送内存释放请求,系统响应内存释放请求,将对应的内存释放,使得被释放的内存能够被再次利用。由于一些应用程序的代码本身存在缺陷,可能会导致对一块已经被释放的内存再次进行释放,这种现象被称为内存重复释放DoubleFree,DoubleFree可能导致内存崩溃等情况。
发明内容
本公开实施例至少提供一种内存处理方法及装置。
第一方面,本公开实施例提供了一种内存处理方法,包括:
响应于目标应用的内存释放请求,确定所述内存释放请求指示的第一目标内存;
基于当前存储的内存释放日志,确定所述第一目标内存是否已被释放;所述内存释放日志用于指示在接收所述内存释放请求之前释放的内存;
在所述第一目标内存已被释放的情况下,停止释放所述第一目标内存。
一种可选的实施方式中,所述方法还包括:
在所述第一目标内存未被释放的情况下,释放所述第一目标内存,将所述第一目标内存的内存释放记录写入所述内存释放日志。
一种可选的实施方式中,所述内存释放日志采用环形队列存储;
所述方法还包括:
在所述环形队列满载时,释放所述环形队列中最早存储的内存释放日志。
一种可选的实施方式中,在响应于目标应用的内存释放请求之前,所述方法还包括:
申请处于空闲状态的待分配内存,并将所述待分配内存设置为不可读写的状态;
响应于所述目标应用的内存申请请求,从所述待分配内存中选取未分配的第二目标内存分配给所述目标应用,并将所述第二目标内存设置为可供所述目标应用进行读写的状态。
一种可选的实施方式中,在释放所述第一目标内存后,所述方法还包括:
将所述第一目标内存设置为不可读写的状态,将所述第一目标内存的分配信息更新为未分配。
一种可选的实施方式中,所述方法还包括:
在所述第一目标内存已被释放的情况下,生成针对所述内存释放函数的重复释放报告;所述重复释放报告用于指示发生重复释放的第一目标内存以及指示释放所述第一目标内存的所述内存释放请求。
第二方面,本公开实施例还提供一种内存处理装置,包括:
第一确定模块,用于响应于目标应用的内存释放请求,确定所述内存释放请求指示的第一目标内存;
第二确定模块,用于基于当前存储的内存释放日志,确定所述第一目标内存是否已被释放;所述内存释放日志用于指示在接收所述内存释放请求之前释放的内存;
处理模块,用于在所述第一目标内存已被释放的情况下,停止释放所述第一目标内存。
一种可选的实施方式中,所述处理模块还用于:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110882498.9/2.html,转载请声明来源钻瓜专利网。