[发明专利]内存改写的定位方法在审
| 申请号: | 201410089588.2 | 申请日: | 2014-03-12 |
| 公开(公告)号: | CN103914356A | 公开(公告)日: | 2014-07-09 |
| 发明(设计)人: | 赵众 | 申请(专利权)人: | 汉柏科技有限公司 |
| 主分类号: | G06F11/07 | 分类号: | G06F11/07 |
| 代理公司: | 北京天奇智新知识产权代理有限公司 11340 | 代理人: | 谢磊 |
| 地址: | 300384 天津市西青*** | 国省代码: | 天津;12 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 内存 改写 定位 方法 | ||
技术领域
本发明涉及计算机领域,具体地涉及一种内存改写的定位方法。
背景技术
在当今IT行业,代码开发中最频繁的使用之一是内存的申请、使用与释放。如果申请内存后,在使用的过程中内存被其它流程错误改写,则之后正常流程再访问此内存时会出现内存访问异常的情况。如果出现内存改写,则需要查找改写内存的代码位置。
现有技术中,内存改写定位问题一直是困扰开发者的一大难题,出现内存改写后,开发者花费大量的时间去查看代码,查找是哪个地方的代码改写的内存,这样既费时又费力。
发明内容
本发明鉴于上述情况而作出,其目的是提供一种内存改写的定位方法,该方法通过自动检测到内存的改写后,打印出上一块内存的内存头信息和内存尾信息或者下一块内存的内存头信息和内存尾信息,根据打印的内存头信息和内存尾信息,定位内存改写的位置。当出现内存改写后,通过该方法可以快速定位内存改写信息,并且耗时短,效率高。
根据本发明的一个方面,提供了一种内存改写的定位方法,该方法包括:访问第一内存;检测第一内存的内存头魔数是否发生改变;如果第一内存的内存头魔数发生改变,则第一内存被改写,将第二内存的内存头信息和内存尾信息打印出来,其中第二内存为第一内存的上一块内存;检测第一内存的内存尾魔数是否发生改变;如果第一内存的内存尾魔数发生改变,则第一内存被改写,将第三内存的内存头信息和内存尾信息打印出来,其中第三内存为第一内存的下一块内存;通过打印的第二内存或第三内存的内存头信息和内存尾信息,定位改写第一内存的代码位置,再将代码位置的内存释放。
优选地,如果第一内存的内存头和内存尾魔数都未发生改变,则进行正常的访问第一内存。
优选地,第一内存、第二内存和第三内存均包括:内存头和内存尾。
优选地,内存头包括:内存头魔数、申请所需容量的内存、调用申请内存的函数地址及代码行数信息和调用释放内存的函数地址及代码行数信息。
优选地,内存尾包括:内存尾魔数。
优选地,内存头魔数用于确认申请内存的起始位置和申请释放信息。
优选地,内存尾魔数用于确认申请内存的结束位置。
优选地,访问第一内存之前,还包括:申请第一内存。
优选地,申请第一内存具体包括:将第一内存的内存头魔数设置为第一数字,保存调用申请第一内存的函数地址及代码行数信息在第一内存里,将第一内存的内存尾魔数设置为第二数字,再将第一内存加入到内存链表中。
优选地,将代码位置的内存释放具体包括:将第一内存的内存头魔数设置为第三数字,保存调用释放第一内存的函数地址及代码行数信息在第一内存里,将第一内存的内存尾魔数设置为第四数字,再将内存从内存链表中摘除。
根据本发明的内存改写的定位方法,通过自动检测到内存的改写后,打印出上一块内存的内存头信息和内存尾信息或者下一块内存的内存头信息和内存尾信息,根据打印的内存头信息和内存尾信息,定位内存改写的位置。通过该方法可以快速定位内存改写信息,避免开发者花费大量时间去查找代码,从而提高内存改写的定位效率。
附图说明
图1是根据本发明实施方式的内存的结构示意图;
图2是根据本发明实施方式的内存的内存头结构示意图;
图3是根据本发明实施方式的内存改写的定位方法的流程图;
图4是根据本发明实施方式的申请内存的流程图;
图5是根据本发明实施方式的内存释放的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。
在现有的技术中,出现内存改写后,开发者花费更多的时间去查看代码,查找是哪个地方的代码改写的内存,这样既费时又费力。
本发明的内存改写的定位方法,通过自动检测到内存的改写后,打印出上一块内存的内存头信息和内存尾信息或者下一块内存的内存头信息和内存尾信息,根据打印的内存头信息和内存尾信息,定位内存改写的位置。
图1是根据本发明实施方式的内存的结构示意图。如图1所示,内存包括:内存头11和内存尾12。
图2是根据本发明实施方式的内存的内存头结构示意图。如图2所示,内存头11包括:内存头魔数21、申请所需容量的内存22、调用申请内存的函数地址23、调用申请内存的代码行数信息24、释放内存的函数地址25及释放内存的代码行数信息26。内存头魔数用于确认申请内存的起始位置和申请释放信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410089588.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:固态硬盘检错装置以及方法
- 下一篇:加固型陶瓷板





