• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 7
    • 下载费用:30 金币  

    重庆时时彩带线走势图: 一种内存泄露的快速定位方法.pdf

    关 键 词:
    一种 内存 泄露 快速 定位 方法
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201410089673.9

    申请日:

    2014.03.12

    公开号:

    CN103914376A

    公开日:

    2014.07.09

    当前法律状态:

    驳回

    有效性:

    无权

    法律详情: 发明专利申请公布后的驳回IPC(主分类):G06F 11/36申请公布日:20140709|||实质审查的生效IPC(主分类):G06F 11/36申请日:20140312|||公开
    IPC分类号: G06F11/36 主分类号: G06F11/36
    申请人: 汉柏科技有限公司
    发明人: 赵众
    地址: 300384 天津市西青区华苑产业区海泰西18号西3楼104室
    优先权:
    专利代理机构: 北京天奇智新知识产权代理有限公司 11340 代理人: 谢磊
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201410089673.9

    授权公告号:

    ||||||

    法律状态公告日:

    2018.01.02|||2014.08.06|||2014.07.09

    法律状态类型:

    发明专利申请公布后的驳回|||实质审查的生效|||公开

    摘要

    本发明公开了一种内存泄露的快速定位方法,包括步骤:S1,申请内存时,在内存中申请预定大小的扩展区,用于保存内存头信息;S2,将所述头部标识信息初始化为第一标识,保存调用申请内存的函数信息;S3,将所述内存加入内存链表中;S4,当释放申请的内存时,将所述头部标识信息设置为第三标识,保存调用释放内存的函数信息;S5,将释放的内存从内存链表中删除;S6,需进行内存泄露定位时,遍历内存链表,根据所述函数信息统计相同函数申请内存的次数,其中申请内存的次数不断增长的函数为存在内存泄露的函数,本方法能够清晰地根据函数申请内存的次数,由多到少或由少到多显示内存泄露的具体函数和代码行,便于快速定位。

    权利要求书

    权利要求书
    1.  一种内存泄露的快速定位方法,其特征在于,包括步骤:
    步骤S1,申请内存时,在内存中申请预定大小的扩展区,用于保存内存头信息,所述内存头信息包括:用于确认内存申请和释放情况的头部标识信息,调用申请内存的函数信息,调用释放内存的函数信息;
    步骤S2,将所述头部标识信息初始化为第一标识,保存调用申请内存的函数信息;
    步骤S3,将所述内存加入内存链表中;
    步骤S4,当释放申请的内存时,将所述头部标识信息设置为第三标识,保存调用释放内存的函数信息;
    步骤S5,将释放的内存从内存链表中删除;
    步骤S6,需进行内存泄露定位时,遍历内存链表,根据所述函数信息统计相同函数申请内存的次数,其中申请内存的次数不断增长的函数为存在内存泄露的函数。

    2.  根据权利要求1所述的方法,其特征在于,所述头部标识信息还用于确认申请内存的起始位置。

    3.  根据权利要求1所述的方法,其特征在于,所述扩展区还用于保存内存尾信息,所述内存尾信息包括尾部标识信息,用于确认申请内存的结束位置。

    4.  根据权利要求1至3任意一项所述的方法,其特征在于,所述步骤S6还包括:根据所述申请内存的次数,从大到小打印函数信息中的函数名称及对应的函数申请的次数。

    5.  根据权利要求1至3任意一项所述的方法,其特征在于,所述步骤S6中还包括:根据所述申请内存的次数,从小到大打印函数信息中的函数名称及对应的函数申请的次数。

    6.  根据权利要求4所述的方法,其特征在于,所述根据所述申请内存的次数,从大到小打印函数信息中的函数名称及对应的函数申请的次数,包括:根据所述申请内存的次数和输入的参数n,从大到小打印排在前n位的函数名称及对应的函数申请的次数。

    7.  根据权利要求5所述的方法,其特征在于,所述根据所述申请内存的次数,从小到大打印函数信息中的函数名称及对应的函数申请的次数,包括:根据所述申请内存的次数和输入的参数n,从小到大打印排在前n位的函数名称及对应的函数申请的次数。

    8.  根据权利要求3所述的方法,其特征在于,所述步骤S2还包括:将所述尾部标识信息初始化为第二标识;所述步骤S4还包括:将所述尾部标识信息设置为第四标识。

    9.  根据权利要求1所述的方法,其特征在于,所述函数信息包括函数地址和对应的代码行数,所述函数地址能够用以翻译成函数名。

    10.  根据权利要求8所述的方法,其特征在于,所述头部标识信息和尾部标识信息分别为内存头魔数字和内存尾魔数字,所述第一标识、第二标识、第三标识和第四标识分别为不同的特定数字。

    说明书

    说明书一种内存泄露的快速定位方法
    技术领域
    本发明涉及内存管理领域,尤其涉及一种内存泄露的快速定位方法。
    背景技术
    当今的IT行业中,代码开发中最频繁的操作之一就是内存的申请与释放。如果内存申请后,没有被及时释放,且这种情况频繁出现,就会导致剩余内存不断减少,可用内存逐渐降低的情况,这种情况通常被称之为内存泄露现象。如果出现内存泄露,就需要开发人员花费更多的时间去查看代码,查找没有释放的地方,因此内存泄露问题一直是困扰开发者定位问题的一大难题,往往需要开发者花费大量的时间去查找内存泄露的地方,既费时又费力。现有的一种定位内存泄露的方法为:首先启动程序;然后分配新内存时,根据内存分配的地址,在设定的路径内生成内存跟踪文件,内存跟踪文件的内容或文件名与分配的内存地址、分配内存的文件或分配内存的源代码的行号相关;释放内存时,根据传进的内存地址,删除相应的内存跟踪文件。当程序运行完毕之后,根据设定的路径内所存在的内存跟踪文件判断内存泄露的情况,即,若设定的路径内存在未删除的内存跟踪文件,则说明有分配的内存未被释放。该技术存在的技术问题:需要启动新的程序,对现有程序的运行环境存在影响,可能导致出现未知的问题,并且还需要替换分配内存的接口,创建跟踪文件,需要根据跟踪文件来确认是否存在内存泄露,如果内存申请的地方较多,跟踪文件的信息量很大,不便于定位。
    发明内容
    本发明鉴于上述情况而作出,其目的是提供一种内存泄露的快速定位方法,能够清晰地根据函数申请内存的次数,由多到少或由少到多显示内 存泄露的具体函数和代码行,便于快速定位。
    本发明提供一种内存泄露的快速定位方法,包括步骤:
    步骤S1,申请内存时,在内存中申请预定大小的扩展区,用于保存内存头信息,所述内存头信息包括:用于确认内存申请和释放情况的头部标识信息,调用申请内存的函数信息,调用释放内存的函数信息。
    步骤S2,将所述头部标识信息初始化为第一标识,保存调用申请内存的函数信息。
    步骤S3,将所述内存加入内存链表中。
    步骤S4,当释放申请的内存时,将所述头部标识信息设置为第三标识,保存调用释放内存的函数信息。
    步骤S5,将释放的内存从内存链表中删除。
    步骤S6,需进行内存泄露定位时,遍历内存链表,根据所述函数信息统计相同函数申请内存的次数,其中申请内存的次数不断增长的函数为存在内存泄露的函数。
    进一步地,所述头部标识信息还用于确认申请内存的起始位置。
    进一步地,所述扩展区还用于保存内存尾信息,所述内存尾信息包括尾部标识信息,用于确认申请内存的结束位置。
    优选地,所述步骤S6还包括:根据所述申请内存的次数,从大到小打印函数信息中的函数名称及对应的函数申请的次数。
    优选地,所述步骤S6还包括:根据所述申请内存的次数,从小到大打印函数信息中的函数名称及对应的函数申请的次数。
    进一步地,根据所述申请内存的次数,从大到小打印函数信息中的函数名称及对应的函数申请的次数,包括:根据所述申请内存的次数和输入的参数n,从大到小打印排在前n位的函数名称及对应的函数申请的次数。
    进一步地,根据所述申请内存的次数,从小到大打印函数信息中的函数名称及对应的函数申请的次数,包括:根据所述申请内存的次数和输入的参数n,从小到大打印排在前n位的函数名称及对应的函数申请的次数。
    进一步地,所述步骤S2还包括:将所述尾部标识信息初始化为第二标识;所述步骤S4还包括:将所述尾部标识信息设置为第四标识。
    其中,所述函数信息包括函数地址和对应的代码行数,所述函数地址 能够用以翻译成函数名。
    其中,所述头部标识信息和尾部标识信息分别为内存头魔数字和内存尾魔数字,所述第一标识、第二标识、第三标识和第四标识分别为不同的特定数字。
    根据本发明,提供了一种内存泄露的快速定位方法,能够清晰地根据函数申请内存的次数,由多到少或由少到多显示内存泄露的具体函数和代码行,便于快速定位。
    附图说明
    图1是本发明的内存泄露的快速定位方法的流程示意图。
    具体实施方式
    为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
    本发明提供一种内存泄露的快速定位方法,能够清晰地由多到少显示内存泄露的具体函数和代码行,便于快速定位。
    图1是本发明的内存泄露的快速定位方法的流程示意图。
    如图1所示,一种内存泄露的快速定位方法,包括以下步骤:
    步骤S1,申请内存时,在内存中申请预定大小的扩展区,用于保存内存头信息,内存头信息包括:用于确认内存申请和释放情况的头部标识信息,调用申请内存的函数信息,调用释放内存的函数信息。
    当函数需要内存空间时,函数通过调用申请内存命令来申请一定大小的内存空间,在为该函数分配所需的内存空间的同时还在内存中申请并分配预定大小的扩展区,用于保存内存头信息。
    头部标识信息还用于确认申请内存的起始位置。
    优选地,扩展区还用于保存内存尾信息,内存尾信息包括尾部标识信息,用于确认申请内存的结束位置。
    函数信息包括函数地址和对应的代码行数,函数地址能够用以翻译成函数名。
    步骤S2,将头部标识信息初始化为第一标识,保存调用申请内存的函数信息。
    优选地,同时将尾部标识信息初始化为第二标识。
    步骤S3,将该内存加入内存链表中。
    步骤S4,当释放申请的内存时,将头部标识信息设置为第三标识,保存调用释放内存的函数信息。
    优选地,同时将尾部标识信息设置为第四标识。
    步骤S5,将释放的内存从内存链表中删除。
    步骤S6,需进行内存泄露定位时,遍历内存链表,根据所述函数信息统计相同函数申请内存的次数,其中申请内存的次数不断增长的函数为存在内存泄露的函数。
    具体地,统计相同函数申请内存的次数,可根据申请内存的次数,从大到小打印函数信息中的函数名称及对应的函数申请的次数,还可进一步根据申请内存的次数和输入的参数n,从大到小打印排在前n位的函数名称及对应的函数申请的次数。
    或者,根据申请内存的次数,从小到大打印函数信息中的函数名称及对应的函数申请的次数,还可进一步根据申请内存的次数和输入的参数n,从小到大打印排在前n位的函数名称及对应的函数申请的次数。
    其中,头部标识信息和尾部标识信息分别为内存头魔数字和内存尾魔数字,第一标识、第二标识、第三标识和第四标识分别为不同的特定数字。
    下面给出具体应用时的实施例。
    实施例1
    假设函数名为function1()的函数的地址为0x00000001,该函数所对应的代码中的行数为LINE:10021。
    当该函数申请内存时,在内存中申请预定大小的扩展区,用于保存内存头信息,内存头信息包括:头部标识信息和函数信息,其中头部标识信息为设置为内存头魔数字“00”,用来表示内存被使用并且未被释放;函数信息包括函数地址0x00000001和对应的代码行数LINE:10021,函数地 址0x00000001能够用来翻译成该函数的函数名function1()。
    优选地,所述扩展区还保存内存尾信息,内存尾信息包括:尾部标识信息,用于确认申请内存的结束位置。在上述函数申请内存时,同时将尾部标识设置为内存尾魔数字“01”,用来表示内存被使用的结束。
    将该内存加入内存链表中。
    当释放申请的内存时,将头部标识信息设置为内存头魔数字“10”,用来表示内存被释放的开始,保存调用释放内存的函数信息,包括函数地址0x00000001和对应的代码行数LINE:10021。
    对应地,将尾部标识信息设置为内存尾魔数字“11”,用来表示内存被释放的结束。
    调用释放函数free(),指定释放内存的首地址,根据该首地址将释放的内存从内存链表中删除,完成释放。
    其他函数调用申请内存和释放内存的原理同上,在需进行内存泄露定位时,遍历内存链表,根据所述函数信息统计相同函数申请内存的次数,其中申请内存的次数不断增长的函数为存在内存泄露的函数。具体地,可根据申请内存的次数,从大到?。ɑ虼有〉酱螅┐蛴『畔⒅械暮萍岸杂Φ暮昵氲拇问?,还可进一步根据申请内存的次数和输入的参数n,从大到?。ɑ虼有〉酱螅┐蛴∨旁谇皀位的函数名称及对应的函数申请的次数,从而确定存在内存泄露的函数,并根据函数信息中对应的具体代码行数,可快速找到问题所在。
    应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的?;し段е?。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例?!  ∧谌堇醋宰ɡ鴚ww.www.4mum.com.cn转载请标明出处

    关于本文
    本文标题:一种内存泄露的快速定位方法.pdf
    链接地址://www.4mum.com.cn/p-6117137.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 重庆幸运农场官方网站骗局 股票分析专家排行榜 猴年四大生肖买彩票易中大奖 竞彩足球比分推荐 798游戏龙王捕鱼 黑龙江6+1 山西11选5走势图和值尾 极速快乐十分平台 快乐12开奖走势图四川手机版 澳洲幸运8定位走势 3D311期的开奖号码预测 北京时时彩赛车计划 万通彩票首页 陕西快乐十分任2 股票配资o配资658 新疆喜乐彩和值图