[发明专利]一种检测内存重复释放的方法在审
申请号: | 201910077844.9 | 申请日: | 2019-01-28 |
公开(公告)号: | CN111488215A | 公开(公告)日: | 2020-08-04 |
发明(设计)人: | 裴彩云 | 申请(专利权)人: | 普天信息技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 蒋欢;王琦 |
地址: | 100080 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 内存 重复 释放 方法 | ||
1.一种检测内存重复释放的方法,其特征在于,包括:
A、每片内存的附加信息中存储内存的当前状态和最近一次对所述内存进行有效分配的时间戳;
B、分配内存时,更新附加内存中的状态信息为已分配,并记录分配时的时间戳;
C、返回的内存指针中携带分配时的时间戳;
D、释放内存时,内存指针参数携带时间戳,对所述内存对应的附加信息中的状态信息和时间戳信息进行综合判断,检测内存是否重复释放。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
初始化内存池,内存池中内存的大小和数量按照业务需求进行配置;
对每个内存分配对应的附加内存,附加内存用于存放所述内存的附加信息;所述内存的附加信息至少包括:内存状态标志位和最近一次对所述内存进行有效分配的时间戳。
3.根据权利要求2所述的方法,其特征在于:
内存状态包括:FREE、INUSE、REPEATED_FREE和INTER_REPEATED_FREE,其中:
FREE表示内存处于释放状态;
INUSE表示内存处于使用状态;
REPEATED_FREE表示检测到连续的重复释放内存;
INTER_REPEATED_FREE表示检测到有间隔的重复释放内存。
4.根据权利要求3所述的方法,其特征在于:
所述A还包括:在分配内存后,将内存状态标志位设置为INUSE,并记录分配时的时间戳;
所述D还包括:在释放内存时,执行以下操作:
D1、如果所述内存对应的附加信息中的内存状态标志位是INUSE,且内存指针参数携带的时间戳和所述内存对应的附加信息中的时间戳相等,则释放所述内存,并将所述内存对应的内存状态标志位置为FREE;
D2、如果所述内存对应的附加信息中的内存状态标志位是INUSE,且内存指针参数携带的时间戳和所述内存对应的附加信息中的时间戳不相等,则判定是所述内存被重复释放前又被分配的重复释放;
D3、如果所述内存对应的附加信息中的内存状态标志位是FREE,则判定是连续的内存重复释放。
5.根据权利要求2至4任一项所述的方法,其特征在于:
所述内存的附加信息还包括但不限于:函数的调用信息、预防写越界的保护区域、内存大小信息。
6.根据权利要求1所述的方法,其特征在于,该方法还包括:
对系统的指针类型进行二次封装,在其中携带分配指针时的时间戳。
7.根据权利要求4所述的方法,其特征在于:
内存状态标志位stateflag的不同取值分别表示不同的内存状态,其中:
stateflag=0对应FREE;
stateflag=1对应INUSE;
stateflag=2对应REPEATED_FREE;
stateflag=3对应INTER_REPEATED_FREE。
8.根据权利要求7所述的方法,其特征在于,该方法还包括初始化操作:
置所有内存对应的附加信息中的内存状态标志位stateflag=0;
置所有内存对应的附加信息中的分配的时间戳timestamp=0。
9.根据权利要求8所述的方法,其特征在于:
所述A包括:应用程序调用Mem_malloc函数申请内存,内存分配成功后,置所述内存的stateflag=1,时间戳timestamp=time1,其中,time1是当时时间;
所述步骤B包括:当应用程序调用Mem_free函数释放所述内存时,内存指针参数携带时间戳time1,通过比较,确定所述内存的时间戳timestamp与内存指针参数携带的时间戳time1相等,且stateflag=1,正常释放,置所述内存的stateflag=0,时间戳为timestamp=0,内存释放成功。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于普天信息技术有限公司,未经普天信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910077844.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种虾的干制品及其制备方法
- 下一篇:应用程序管理方法