一种内存管理方法及系统技术方案

技术编号:12589546 阅读:90 留言:0更新日期:2015-12-24 14:44
本发明专利技术提供一种内存管理方法及系统。所述内存管理方法包括:进行内存分配时,实际分配的内存包括头信息、需要分配的内存空间大小以及尾信息,所述头信息和尾信息中包括用于检测内存越界的信息,同时建立所分配内存的管理结构体,所述管理结构体中包括所分配内存的函数调用信息以及内存分配信息;进行内存释放时,根据所述内存的头信息和尾信息进行内存越界检测,当检测到发生内存越界时,保存所述内存的管理结构体,释放所述内存。本发明专利技术的技术方案集内存越界的检测、定位和记录为一体,能快速的检测定位内存越界问题,并且将问题进行记录,方便开发人员的调试。

【技术实现步骤摘要】

本专利技术涉及一种计算机技术,特别是涉及一种内存管理方法及系统
技术介绍
内存越界是我们软件开发中经常遇到的一个问题。何谓内存访问越界,简单的说,你向系统申请了一块内存,在使用这块内存的时候,超出了你申请的范围。内存越界通常可能会造成如下后果:1,破坏堆中的内存分配信息数据,特别是动态分配的内存块的内存信息数据。2,破坏程序自己的其他对象的内存空间,这种破坏会影响程序执行的不正确性,当然也会诱发coredump,如破坏了指针数据。3,破坏了空闲内存块,很幸运,这样不会产生什么问题,但谁知道什么时候不幸会降临呢?所以有效的检测和快速的定位内存越界的机制就十分重要。另外对于无屏的嵌入式设备(如路由器,交换机等)由于没有屏幕显示错误,只有当调试人员连接串口或者telnet查看的时候才能看到设备的信息。现有的内存越界检测方案只描述了如何检测内存的上溢(上越界)和下溢(下越界),却并没有内存越界的定位方法和错误信息的记录机制,现有的简单检测方案在嵌入式设备上并不能解决内存越界的定位问题。鉴于此,如何找到一种能够检测和定位内存越界问题的内存管理方案就成为了本领域技术人员亟待解决的问题。
技术实现思路
鉴于以上所述现有技术的缺点,本专利技术的目的在于提供一种内存管理方法及系统,用于解决现有技术中难以检测和定位内存越界的问题。为实现上述目的及其他相关目的,本专利技术提供一种内存管理方法,所述内存管理方法包括:进行内存分配时,实际分配的内存包括头信息、需要分配的内存空间大小以及尾信息,所述头信息和尾信息中包括用于检测内存越界的信息,同时建立所分配内存的管理结构体,所述管理结构体中包括所分配内存的函数调用信息以及内存分配信息;进行内存释放时,根据所述内存的头信息和尾信息进行内存越界检测,当检测到发生内存越界时,保存所述内存的管理结构体,释放所述内存。可选地,所述内存管理方法包括:进行内存释放时,根据所述内存的头信息和尾信息进行内存越界检测,当检测到未发生内存越界时,释放所述内存的管理结构体,释放所述内存。可选地,所述头信息进行4字节对齐,包括三个4字节,第一个4字节存放内存标志信息,第二个4字节包括需要分配的内存空间大小,第三个4字节通过设定算法对所述内存空间大小计算得出;所述尾信息包括一个4字节数据,所述4字节存放的数据与头信息的第三个4字节内容相同。可选地,所述内存越界检测的具体实现包括:通过所述设定算法对头信息的第二个4字节的数据计算得到的一个计算结果,将所述计算结果与所述头信息的第三个4字节数据进行比较,如果不一致,则发生内存下越界;将所述计算结果与所述尾信息的所述4字节数据进行比较,如果不一致,则发生内存上越界;当内存上越界与内存下越界都未发生时,表明未检测到发生内存越界,否则,表明检测到发生内存越界。可选地,所述内存管理方法还包括:通过管理链表管理所述管理结构体,通过内存溢出链表保存发生内存越界的内存管理结构体。可选地,所述内存管理方法还包括:在同一个共享库中实现所述内存分配和内存释放。可选地,所述内存管理方法还包括:遍历所述内存溢出链表,输出所述内存溢出链表中的所有内存管理结构体的信息。本专利技术提供一种内存管理系统,所述内存管理系统包括:内存分配模块,用于内存分配以及建立所分配内存的管理结构体,所述管理结构体中包括所分配内存的函数调用信息以及内存分配信息,将所述管理结构体加入到管理链表中;实际分配的内存包括头信息、需要分配的内存空间大小以及尾信息,所述头信息和尾信息中包括用于检测内存越界的信息;内存释放模块,用于内存释放以及越界管理,根据所述内存的头信息和尾信息进行内存越界检测,当检测到发生内存越界时,将所述内存对应的管理结构体从所述管理链表中移除,并将所述内存对应的管理结构体加入到内存溢出链表中,释放所述内存。可选地,所述内存释放模块还用于:根据所述内存的头信息和尾信息进行内存越界检测,当检测到未发生内存越界时,将所述内存对应的管理结构体从所述管理链表中移除并释放所述管理结构体,释放所述内存。可选地,所述内存溢出链表节点数目设有上限,当所述内存溢出链表的节点数目达到上限后,对所述内存溢出链表进行先入先出管理。可选地,所述内存分配模块以及内存释放模块在同一个共享库中实现。可选地,所述头信息进行4字节对齐,包括三个4字节,第一个4字节存放内存标志信息,第二个4字节包括需要分配的内存空间大小,第三个4字节通过设定算法对所述内存空间大小计算得出;所述尾信息包括一个4字节数据,所述4字节存放的数据与头信息的第三个4字节内容相同。可选地,所述内存越界检测的具体实现包括:通过所述设定算法对头信息的第二个4字节的数据计算得到的一个计算结果,将所述计算结果与所述头信息的第三个4字节数据进行比较,如果不一致,则发生内存下越界;将所述计算结果与所述尾信息的所述4字节数据进行比较,如果不一致,则发生内存上越界;当内存上越界与内存下越界都未发生时,表明未检测到发生内存越界,否则,表明检测到发生内存越界。可选地,所述内存分配信息包括所分配内存的起始地址、内存大小。可选地,所述内存管理系统还包括内存越界信息输出模块,用于遍历所述内存溢出链表,输出所述内存溢出链表中的所有内存管理结构体的信息。如上所述,本专利技术的一种内存管理方法及系统,具有以下有益效果:集内存越界的检测、定位和记录为一体,能快速的检测定位内存越界问题,并且将问题进行记录,方便开发人员的调试。同时由于通过共享库的方式完成本专利技术的方案,所以可以让链接了共享库的进程在其各自的内存空间内维护着本进程的内存溢出链表,即可以针对某一个进程单独调试,而不需要打印出所有进程的内存溢出信息。另外使用共享库的另一个优点在于可以简单的通过在共享库中的宏来打开和关闭所有进程的内存管理功能,因为上述内存管理功能都属于调试信息,往往只在开发版本中加入,而在发布版本中需要去除所有的调试信息。【附图说明】图1显示为本专利技术的内存管理方法的一实施例的流程示意图。图2显示为本专利技术的内存管理方法的一实施例的分配流程示意图。图3显示为本专利技术的内存管理方法的一实施例的释放流程示意图。图4显示为本专利技术的内存管理方法的一实施例的内存溢出链表管理流程示意图。图5显示为本专利技术的内存管理系统的一实施例的模块示意图。元件标号说明I内存管理系统11内存分配模块12内存释放模块SI ?S2 步骤【具体实施方式】以下通过特定的具体实例说明本专利技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本专利技术的其他优点与功效。本专利技术还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本专利技术的精神下进行各种修饰或改变。需要说明的是,本实施例中所提供的图示仅以示意方式说明本专利技术的基本构想,遂图式中仅显示与本专利技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。本专利技术提供一种内存管理方法。在一个实施例中,如图1所示,所述内存管理方法包括:步骤SI,进行内存分配时,实际分配的内存包括头信息、当前第1页1 2 3 本文档来自技高网...

【技术保护点】
一种内存管理方法,其特征在于,所述内存管理方法包括:进行内存分配时,实际分配的内存包括头信息、需要分配的内存空间大小以及尾信息,所述头信息和尾信息中包括用于检测内存越界的信息,同时建立所分配内存的管理结构体,所述管理结构体中包括所分配内存的函数调用信息以及内存分配信息;进行内存释放时,根据所述内存的头信息和尾信息进行内存越界检测,当检测到发生内存越界时,保存所述内存的管理结构体,释放所述内存。

【技术特征摘要】

【专利技术属性】
技术研发人员:杭旭
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1