[发明专利]一种内存管理方法及装置在审
申请号: | 201910863859.8 | 申请日: | 2019-09-12 |
公开(公告)号: | CN110673953A | 公开(公告)日: | 2020-01-10 |
发明(设计)人: | 马龙 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F12/02 |
代理公司: | 11227 北京集佳知识产权代理有限公司 | 代理人: | 张博 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存块 内存块链 内存块类型 构建 释放 删除 内存管理 内存泄露 软件运行 管理性 正整数 内存 工作量 更新 | ||
本发明实施例提供一种内存管理方法及装置,当接收到释放内存块的请求时,判断待释放的内存块类型,若待释放的内存块类型为父内存块,基于预先构建的内存块结构,删除父内存块以及子内存块链表中的每一个子内存块,其中,预先构建的内存块结构包括父内存块和子内存块链表,子内存块链表包括N个子内存块,N为大于等于1的正整数,若待释放的内存块类型为子内存块,基于预先构建的内存块结构,将子内存块从所属的子内存块链表中删除,并更新子内存块链表。本发明提供的技术方案,不仅能够大量减少技术人员的工作量,还能够提高内存的易管理性,进而降低程序中的内存泄露现象以及提高软件运行的稳定性。
技术领域
本发明涉及计算机存储技术领域,尤其涉及一种内存管理方法及装置。
背景技术
在程序运行的过程中会不断占用和释放内存,程序占用的内存块可分为栈区和堆区。在对程序中的内存块进行内存释放时,栈区的内存块可由编译器自动释放,而堆区的内存块则需要由技术人员主动申请释放。
在现有技术中,通过对堆区的每个内存块进行单独的管理来进行内存释放,当接收到技术人员发送的释放内存块的申请时,调用与所需释放内存的内存块对应的指针对该内存块进行内存释放。但是,由于通过对每个内存块进行单独的管理来进行内存释放,不仅需要庞大的工作量,还容易出现内存泄漏现象。
发明内容
有鉴于此,本发明目的在于提供一种内存管理方法及装置,以解决现有技术中通过对每个内存块进行单独的管理来进行内存释放,不仅需要庞大的工作量,还容易出现内存泄漏现象的问题。
为实现上述目的,本发明提供如下技术方案:
本发明第一方面公开了一种内存管理方法,包括:
当接收到释放内存块的请求时,判断待释放的内存块类型,所述内存块类型包括父内存块和子内存块;
若所述待释放的内存块类型为父内存块,基于预先构建的内存块结构,删除所述父内存块以及子内存块链表中的每一个子内存块,其中,所述预先构建的内存块结构包括父内存块和子内存块链表,所述子内存块链表包括N个子内存块,所述N为大于等于1的正整数;
若所述待释放的内存块类型为子内存块,基于预先构建的内存块结构,将所述子内存块从所属的子内存块链表中删除,并更新所述子内存块链表。
可选的,所述内存块结构的预先构建过程,包括:
指定父内存块以及与所述父内存块具有双向指向关系的N个子内存块;其中,所述父内存块包括预先分配的内存空间和固定内存空间;
根据所述父内存块的子内存块链表指针的指向,确定所述N个子内存块的顺序;
根据确定顺序的所述N个子内存块得到子内存块链表;
根据所述子内存块链表和所述父内存块构建内存块结构;
其中,所述预先分配的内存空间用于所述父内存块的子内存块链表指针、各个子内存块对应的父指针以及各个子内存块对应的连接指针。
可选的,若存在与所述子内存块具有双向指向关系的次子内存块,所述根据确定顺序的所述N个子内存块得到子内存块链表,包括:
根据所述子内存块的次子内存块链表指针的指向,确定所述子内存块对应的次子内存块构成的次子内存块链表;
根据确定顺序的所述N个子内存块和所述次子内存块链表,得到子内存块链表。
可选的,所述若所述待释放的内存块类型为父内存块,基于预先构建的内存块结构,删除所述父内存块以及子内存块链表中的每一个子内存块,包括:
若所述待释放内存块的类型为父内存块,基于预先构建的内存块结构,依次删除子内存块链中的每一个子内存块以及所述父内存块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910863859.8/2.html,转载请声明来源钻瓜专利网。