[发明专利]对内存重复释放进行定位的方法和装置在审

专利信息
申请号: 201410089086.X 申请日: 2014-03-12
公开(公告)号: CN103914355A 公开(公告)日: 2014-07-09
发明(设计)人: 赵众 申请(专利权)人: 汉柏科技有限公司
主分类号: G06F11/07 分类号: G06F11/07
代理公司: 北京天奇智新知识产权代理有限公司 11340 代理人: 谢磊
地址: 300384 天津市西青*** 国省代码: 天津;12
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 内存 重复 释放 进行 定位 方法 装置
【说明书】:

技术领域

发明涉及程序开发领域,特别涉及对内存重复释放进行定位的方法和装置。

背景技术

当今IT行业,代码开发中最频繁的使用之一就是内存的申请与释放。如果出现内存申请后,已经在其他地方释放,又存在再次释放此内存的情况,就会出现重复两次释放同一块内存,导致出现异常。内存重复释放问题一直是困扰开发者定位问题的一大难题,出现内存重复释放的情况后往往需要开发者花费大量的时间去查找内存重复释放的地方,既费时又费力。

操作系统一般通过垃圾回收算法来对内存进行回收。垃圾回收线程在系统空闲的时候从系统的根集出发,定位所有在使用的内存,并将总内存池中未被使用的内存回收,虽然可以实现异步的非精确性的内存回收,但是由于垃圾回收线程运行受限于系统的忙闲程度,无法彻底解决内存泄露问题。

现有的对内存重复释放进行定位的解决方案主要有:申请业务内存时,申请与业务内存相关的关联内存;在释放业务内存之前或同时,获得关联内存的地址;检测是否为重复释放,如果是重复释放,则将当前运行环境记录到指定记录区,并将关联内存的内容转储到指定记录区,通过分析指定记录区的记录,进行重复释放定位,如果不是重复释放,则将当前运行环境记录到关联内存中。

容易看出,上述解决方案必须要申请关联内存,将关联内存的内容转储到指定记录区,通过分析指定记录区的记录,才能定位重复释放的地方。其不仅操作复杂,并且缺少精确性和具体性。

发明内容

本发明的目的是提供一种对内存重复释放进行定位的方法和装置,能够输出内存重复释放的具体函数和代码行,便于快速定位。

根据本发明的一个方面,提供了一种用于对内存重复释放进行定位的方法,其特征在于,包括以下步骤:

申请内存时,在内存中申请预定大小的扩展区,用于保存内存头部信息,所述内存头部信息包括用于确认内存申请和释放情况的头部标识信息;

将所述头部标识信息初始化为第一标志,保存调用申请内存的函数信息;

在释放内存之前,检测该内存的头部标识信息;

如果所述头部标识信息为不同于所述第一标志的第三标志,则确定为重复释放,根据调用本次释放的函数信息输出该内存的重复释放的定位信息。

优选地,所述方法还包括:

如果所述头部标识信息为所述第一标志,则确定为首次释放,将所述头部标识信息设置为所述第三标志,保存调用释放内存的函数信息,执行内存释放。

优选地,所述保存调用申请内存的函数信息包括:

保存调用申请内存的函数地址及在代码中对应的行数。

优选地,所述内存头部信息还包括:内存实际申请大小、调用申请内存的函数地址及行数,以及调用释放内存的函数地址及行数;所述头部标识信息还用于确认申请内存的起始位置,且所述将头部标识信息初始化为第一标志,包括:将所述头部标识信息初始化为一特殊数字。

优选地,所述根据调用本次释放的函数信息输出该内存的重复释放的定位信息,包括:将调用本次释放的函数名及在代码中对应的行数,以及调用首次释放的函数名及在代码中对应的行数进行打印显示,并禁止本次释放;其中,所述函数名由函数信息中的函数地址翻译而成。

优选地,所述扩展区还用于保存内存尾部信息,所述内存尾部信息包括:用于确认申请内存的结束位置的尾部标识信息,在申请内存时,除了将所述头部标识信息初始化为第一标志,还将所述尾部标识信息初始化为第二标志,并且将申请的内存加入到内存链表中;所述执行内存释放包括:

将尾部标识信息设置为不同于第二标识的第四标志,表示内存被释放的结束,将释放的内存从内存链表中删除。

根据本发明的另一方面,提供了一种用于对内存重复释放进行定位的装置,其特征在于,包括以下模块:

内存申请模块,用于在申请内存时,在内存中申请预定大小的扩展区,用于保存内存头部信息,所述内存头部信息包括用于确认内存申请和释放情况的头部标识信息;

内存信息初始化模块,用于将所述头部标识信息初始化为第一标志,保存调用申请内存的函数信息;

释放检测模块,用于在释放内存之前,检测该内存的头部标识信息;

重复释放处理模块,用于在所述头部标识信息为不同于所述第一标志的第三标志时,确定为重复释放,根据调用本次释放的函数信息输出该内存的重复释放的定位信息。

优选地,还包括首次释放处理模块,用于在所述头部标识信息为所述第一标志时,确定为首次释放,将所述头部标识信息设置为所述第三标志,保存调用释放内存的函数信息,执行内存释放。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410089086.X/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top