一种内存保护方法

文档序号:6443650阅读:723来源:国知局
专利名称:一种内存保护方法
技术领域
本发明涉及ー种内存保护方法,属于内存管理技术领域。
背景技术
现有OS (操作系统)的内存管理机制能够让用户灵活动态的使用操纵内存,这种机制给用户带来便利的同时也带来了极大的安全隐患。伴随技术的快速发展,软件规模越来越庞大,软件的复杂度也极大提高,这样就会导致内存使用的随意性大大增加,内存被破坏的可能性也大大提高,而有的内存管理机制无法识别内存地址的合法性,在用户动态申请、 释放内存时就会带来极大的安全隐患,导致系统极为不稳定,严重情况可导致系统瘫痪,导致设备无法正常工作。现有ー些解决方案虽然在一定程度上解决了ー些内存的隐患,但绝大部分仅仅保护内存首地址信息而没有对整块内存进行有效保护。针对上述情況,如何提出ー种内存保护方法,在对整块内存加以保护的同时还采用了内存记录日志系统对内存使用情况进行了有效的跟踪记录,是本发明主要解决的问题。

发明内容
本发明为了解决现有内存保护机制不完善的问题,提供了ー种内存保护方法,可以有效的监控检查内存,极大提升系统稳定性及可靠性。为了解决上述技术问题,本发明采用以下技术方案予以实现 ー种内存保护方法,包括以下步骤
(1)、毎次分配内存时,另外开辟一段存储有标识信息的空间,并一起分配给用户;
(2)、当用户释放内存时,判断标识信息中是否包含内存空间释放的信息,若是,则结
束;
(3)、若标识信息中没有包含内存空间释放的信息,则判断标识信息中的信息是否与分配内存时所存储的标识信息一致,若一致,则结束,否则,记录错误信息。进ー步的,步骤(1)中所开辟的存储有标识信息的空间为
在实际分配的内存空间的两端分別加入头、尾两部分标识信息,其中,头标识信息记录为D0GTAG_VALID,尾标识信息记录为D0GTAG_TAIL。又进ー步的,步骤(2)中判断标识信息中是否包含内存空间释放的信息的方式为 判断头标识信息中是否包含内存空间释放的信息。再进ー步的,当用户释放内存时,调用释放指令,并且将头标识中的信息修改为内存空间释放D0G_FREE。优选的,当用户释放内存时,还包括将内存块清零的步骤。步骤(3)中判断标识信息中的信息是否与分配内存时所存储的标识信息一致的方式为(31)、首先判断头标识中的信息是否与D0GTAG_VALID—致,若不一致,记录错误信息, 若一致,执行步骤(32);
(32)、判断尾标识中的信息是否与D0GTAG_TAIL—致,若不一致,记录错误信息,若一致,则将头标识中的信息修改为内存空间释放D0G_FREE。步骤(3)中记录错误信息的方式为创建内存日志记录系统,当用户分配内存时, 建立ー个日志记录系统节点,并将内存块首地址、内存块大小、分配内存所在的文件名、分配内存所在的行号以及附属信息填充于日志记录系统中,当需要记录错误信息吋,将错误信息记录于内存日志记录系统中。当释放内存时,从所述节点移除,并将移除时的D0G_FREE信息记录到内存日志记录系统中。优选的,所述头标识信息的数据大小为8字节。优选的,所述尾标识信息的数据大小为4字节。与现有技术相比,本发明的优点和积极效果是本发明的内存保护方法原有操作系统的内存管理基础上引入了狗牌保护机制及内存记录日志系统,在动态内存管理上加入狗牌标记,有效识别并记录内存使用情况,确保用户使用操作的内存合法有效,并协助用户监控、检查内存是否有泄漏,有效提升了系统稳定性。结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。


图1是本发明所提出的内存保护方法的一种实施例流程图2是本发明所提出的内存保护方法的一种实施例的内存空间示意图; 图3是本发明所提出的内存保护方法的一种实施例的内存日志记录系统结构示意图。
具体实施例方式本发明为了解决现有内存保护机制不完善的问题,提供了ー种内存保护方法,通过在所分配的内存另外开辟一段存储有标识信息的空间,一起分配给用户,当用户释放内存时,判断标识信息的正确性,进而可以判断出内存是否被踩,并做出记录,可以有效的监控检查内存,极大提升系统稳定性及可靠性。下面结合附图对本发明的具体实施方式
作进ー步详细地说明。实施例一,參见图1所示,本实施例的内存保护方法,包括以下步骤
51、毎次分配内存时,另外开辟一段存储有标识信息的空间,并一起分配给用户;
52、当用户释放内存时,判断标识信息中是否包含内存空间释放的信息,若是,则结
束;
53、若标识信息中没有包含内存空间释放的信息,则判断标识信息中的信息是否与分配内存时所存储的标识信息一致,若一致,则结束,否则,记录错误信息。作为ー个具体的实施例,在本实施例中,參见图2所示,步骤Sl中所开辟的存储有标识信息的空间为
在实际分配的内存空间的两端分別加入头、尾两部分标识信息,其中,头标识信息记录
4为D0GTAG_VALID,尾标识信息记录为D0GTAG_TAIL。其中,头标识信息中可以记录头标识和分配的内存大小,尾标识信息中记录有尾标识,优选所述头标识信息的数据大小为8字节,其中两部分内容的信息各占4字节,由于尾标识信息中只记录了尾标识,因此,为其分配4字节即可实现。这样,也即为所分配的内存做了独一无ニ的标记,在释放内存时只需要检查标记的合法性,即可以判断内存是否被踩,防止由于用户误使用内存导致的异常。步骤S2中判断标识信息中是否包含内存空间释放的信息的方式为判断头标识信息中是否包含内存空间释放的信息。由于当用户释放内存时,调用释放指令,并且将头标识中的信息修改为内存空间释放D0G_FREE。因此,在步骤S2中,判断标识信息中是否包含内存空间释放的信息的方式也即判断头标识信息中是否包含D0G_FREE,若包含,则说明内存空间释放,否则,有可能出现两种情況内存被踩或者系统未及时修改内存空间释放,具体属于哪种情况还需步骤S3做进ー 步判断。为了及时清空内存块的空间,当用户释放内存时,还包括将内存块清零的步骤。步骤S3中判断标识信息中的信息是否与分配内存时所存储的标识信息一致的方式为
S31、首先判断头标识中的信息是否与D0GTAG_VALID —致,若不一致,记录错误信息, 若一致,执行步骤S32;
也即,若内存没有被踩的话,首先头标识中的信息与D0GTAG_VALID是一致的,一旦出现不一致情况,则说明内存被踩,或者用户操作不当造成了出错,此时记录错误信息,若是一致的,则继续检查尾标识中的信息是否正常。S32、判断尾标识中的信息是否与D0GTAG_TAIL —致,若不一致,记录错误信息,若一致,则将头标识中的信息修改为内存空间释放D0G_FREE。同样道理的,若内存没有被踩的话,尾标识中的信息与D0GTAG_TAIL是一致的,一旦出现不一致情况,则说明内存被踩,或者用户操作不当造成了出错,此时记录错误信息, 若是一致的,则说明内存使用情况正常,未出现错误。在本实施例中,步骤S3中记录错误信息的方式为创建内存日志记录系统,当用户分配内存时,建立ー个日志记录系统节点,并将内存块首地址、内存块大小、分配内存所在的文件名、分配内存所在的行号以及附属信息填充于日志记录系统中,当需要记录错误信息吋,将错误信息记录于内存日志记录系统中。參见图3所示,本内存日志记录系统可以采用双向链表式结构进行管理,将用户动态使用的内存信息做一一记录。通过表中记录的内存块首地址、内存块大小、分配内存所在的文件名、分配内存所在的行号以及附属信息,可有效定位到用户分配内存时的大小、所在文件名以及行号等。其中附属信息采用联合的结构描述,在分配内存是该结构记录下该节点的pre和next节点信息,以方便查询数据,当释放内存后,该联合结构记录下释放内存时所在的文件名及行号,以方便用户查询历史分配记录。当释放内存时,从所述节点移除,并将移除时的D0G_FREE信息记录到内存日志记录系统中,以方便用户查询。
本发明对用户使用的整块内存加上保护机制,能够及时发现内存是否被踩,进而给用户预警哪部分内存被踩,并根据内存记录日志系统记录的内存情况协助用户进行有效的监控、检查,极大提升系统稳定性及可靠性。本内存保护方法适合应用于数字电视机顶盒、手机等带有实时操作系统的设备上。当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。
权利要求
1.ー种内存保护方法,其特征在干,包括以下步骤(1)、毎次分配内存时,另外开辟一段存储有标识信息的空间,并一起分配给用户;(2)、当用户释放内存时,判断标识信息中是否包含内存空间释放的信息,若是,则结束;(3)、若标识信息中没有包含内存空间释放的信息,则判断标识信息中的信息是否与分配内存时所存储的标识信息一致,若一致,则结束,否则,记录错误信息。
2.根据权利要求1所述的内存保护方法,其特征在干,步骤(1)中所开辟的存储有标识信息的空间为在实际分配的内存空间的两端分別加入头、尾两部分标识信息,其中,头标识信息记录为D0GTAG_VALID,尾标识信息记录为D0GTAG_TAIL。
3.根据权利要求2所述的内存保护方法,其特征在干,步骤(2)中判断标识信息中是否包含内存空间释放的信息的方式为判断头标识信息中是否包含内存空间释放的信息。
4.根据权利要求3所述的内存保护方法,其特征在干,当用户释放内存时,调用释放指令,并且将头标识中的信息修改为内存空间释放D0G_FREE。
5.根据权利要求4所述的内存保护方法,其特征在干,当用户释放内存时,还包括将内存块清零的步骤。
6.根据权利要求2所述的内存保护方法,其特征在干,步骤(3)中判断标识信息中的信息是否与分配内存时所存储的标识信息一致的方式为(31)、首先判断头标识中的信息是否与D0GTAG_VALID—致,若不一致,记录错误信息, 若一致,执行步骤(32);(32)、判断尾标识中的信息是否与D0GTAG_TAIL—致,若不一致,记录错误信息,若一致,则将头标识中的信息修改为内存空间释放D0G_FREE。
7.根据权利要求1所述的内存保护方法,其特征在干,步骤(3)中记录错误信息的方式为创建内存日志记录系统,当用户分配内存时,建立ー个日志记录系统节点,并将内存块首地址、内存块大小、分配内存所在的文件名、分配内存所在的行号以及附属信息填充于日志记录系统中,当需要记录错误信息吋,将错误信息记录于内存日志记录系统中。
8.根据权利要求7所述的内存保护方法,其特征在干,当释放内存时,从所述节点移除,并将移除时的D0G_FREE信息记录到内存日志记录系统中。
9.根据权利要求2-8任一项权利要求所述的内存保护方法,其特征在干,所述头标识信息的数据大小为8字节。
10.根据权利要求2-8任一项权利要求所述的内存保护方法,其特征在干,所述尾标识信息的数据大小为4字节。
全文摘要
本发明公开了一种内存保护方法,包括以下步骤(1)每次分配内存时,另外开辟一段存储有标识信息的空间,并一起分配给用户;(2)当用户释放内存时,判断标识信息中是否包含内存空间释放的信息,若是,则结束;(3)若标识信息中没有包含内存空间释放的信息,则判断标识信息中的信息是否与分配内存时所存储的标识信息一致,若一致,则结束,否则,记录错误信息。本方法通过在所分配的内存另外开辟一段存储有标识信息的空间,一起分配给用户,当用户释放内存时,判断标识信息的正确性,进而可以判断出内存是否被踩,并做出记录,可以有效的监控检查内存,极大提升系统稳定性及可靠性。
文档编号G06F12/02GK102541748SQ201110446650
公开日2012年7月4日 申请日期2011年12月28日 优先权日2011年12月28日
发明者周印伟 申请人:青岛海信宽带多媒体技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1