本发明专利技术公开了一种内存保护方法,包括以下步骤:(1)每次分配内存时,另外开辟一段存储有标识信息的空间,并一起分配给用户;(2)当用户释放内存时,判断标识信息中是否包含内存空间释放的信息,若是,则结束;(3)若标识信息中没有包含内存空间释放的信息,则判断标识信息中的信息是否与分配内存时所存储的标识信息一致,若一致,则结束,否则,记录错误信息。本方法通过在所分配的内存另外开辟一段存储有标识信息的空间,一起分配给用户,当用户释放内存时,判断标识信息的正确性,进而可以判断出内存是否被踩,并做出记录,可以有效的监控检查内存,极大提升系统稳定性及可靠性。
【技术实现步骤摘要】
本专利技术涉及ー种内存保护方法,属于内存管理
技术介绍
现有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所示,本内存日志记录系统可以采用双向链表式结构进行管理,将用户动态使用的内存信息做一一记录。通过表中记录的内存块首地址本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:周印伟,
申请(专利权)人:青岛海信宽带多媒体技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。