[发明专利]快速定位错误源头的内存管理方法有效
申请号: | 201210436150.8 | 申请日: | 2012-11-02 |
公开(公告)号: | CN102981919A | 公开(公告)日: | 2013-03-20 |
发明(设计)人: | 翁俊峰;张登峰;余杭军 | 申请(专利权)人: | 福建升腾资讯有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07 |
代理公司: | 福州市鼓楼区京华专利事务所(普通合伙) 35212 | 代理人: | 宋连梅 |
地址: | 350000 福建省福州市仓山区金*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 快速 定位 错误 源头 内存 管理 方法 | ||
【技术领域】
本发明涉及一种内存管理方法,特别涉及快速定位错误源头的内存管理方法。
【背景技术】
在嵌入式产品的软件开发过程中经常出现的动态内存问题包括:动态内存泄漏、动态内存错误地址、动态内存多次释放等,严重影响了嵌入式产品的开发进度、可靠性、稳定性。
随着嵌入式产品软件功能的日益复杂,同时客户对嵌入式产品的可靠性和稳定性要求越来越高,有必要找到一种相对简易同时快速但又要比较通用的动态内存管理方法,能够快速且准确定位内存错误的源头。现有技术中,一般是通过内存检测工具发现内存问题,常见的有动态检测工具和静态检测工具。动态检测工具中有代表性的有valgrind,静态检测工具中有代表性的有lint。valgrind是一款linux下寻找内存管理的问题的开源工具,虽然具有比较丰富的内存管理能力但仅能适用于x86/amd/ppc的硬件平台和linux的软件平台。lint是对程序进行更加广泛的错误分析,是一种更加严密的编译工具,但无法检测到软件中稍微复杂的动态内存使用问题,而面对更加微妙的内存分配策略,lint无法胜任。还有一种是特定IDE开发平台提供的针对特定平台的动态内存检测模块,典型的有vc++提供的debuger和crt堆除错函数,但是这些函数无法跨越软件平台。
【发明内容】
本发明要解决的技术问题,在于提供一种快速定位错误源头的内存管理方法,其可以快速发现内存的使用问题,同时具有无MCU依赖,支持检测有源代码模块的动态内存,也支持监测仅提供二进制形式的模块,全面监测软件中动态分配用到的各种应用编程接口。
本发明要解决的技术问题之一,在于提供一种快速定位错误源头的内存管理方法,其可以运行在绝大多数的mcu硬件架构上,也可以移植到支持c库的任意软件平台上。该方法可以快速发现内存的使用问题,通过查看静态管理块快速定位错误的源头,极大地节约了开发过程中的关于动态内存的除错时间,同时大幅提高产品的稳定性和可靠性。
本发明通过以下技术方案解决上述技术问题一:
一种快速定位错误源头的内存管理方法,所述内存管理方法适用于基于C语言的嵌入式软件,首先从内存单元中预分配出部分内存作为静态内存,其余内存均为用于动态分配的内存;其次,将所述静态内存划分为复数个静态管理块;
当动态分配新的内存时,执行内存分配登记步骤;当已分配的内存大小发生变化时,执行内存变更步骤;当已分配的内存需要释放时,执行内存释放步骤;
所述内存分配登记步骤具体为:
步骤1、查找未使用的静态管理块,若找到,执行步骤2,若未找到,输出错误信息并等待开发人员快速分析定位错误;
步骤2、动态分配内存,若分配成功,将被分配的内存的首地址和内存大小记录到所述静态管理块,并将该静态管理块标记为已使用;若分配不成功,输出错误信息并等待开发人员快速分析定位错误;
若需要多次动态分配内存,重复执行步骤1和步骤2;
所述内存变更步骤具体为:
步骤3、根据将要发生变更的内存的首地址从所述静态内存中搜索出该首地址对应的静态管理块;搜索到,执行步骤4,未搜索到,输出错误信息并等待;
步骤4、若变更后的内存大小比原来大,则重新动态分配内存,若分配成功,则将重新分配的内存的新首地址以及内存大小更新至所述静态管理块,若分配不成功,输出错误信息并等待开发人员快速分析定位错误;
若变更后的内存大小比原来小,则直接把变更后的内存大小直接更新所述静态管理块中;
所述内存释放步骤具体为:
步骤5、根据需要释放的内存的首地址从所述静态内存中搜索出该首地址对应的静态管理块,释放该内存,并将该静态管理块标记为未使用;若未搜索到,输出错误信息并等待开发人员快速分析定位错误。
进一步地,所述内存分配登记步骤通过Malloc或Calloc宏调用实现。
进一步地,所述内存变更步骤通过Realloc宏调用实现。
进一步地,所述内存变更步骤通过Free宏调用实现。
本发明要解决的技术问题之二,在于提供一种快速定位错误源头的内存管理方法,其可以运行在绝大多数的mcu硬件架构上,也可以移植到支持c++库的任意软件平台上。该方法可以快速发现内存的使用问题,通过查看静态管理块快速定位错误的源头,极大地节约了开发过程中的关于动态内存的除错时间,同时大幅提高产品的稳定性和可靠性。
本发明通过以下技术方案解决上述技术问题二:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建升腾资讯有限公司,未经福建升腾资讯有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210436150.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于针织大圆机的固定装置
- 下一篇:双面斜纹布料