【技术实现步骤摘要】
一种内存管理方法及装置
本专利技术涉及计算机存储
,尤其涉及一种内存管理方法及装置。
技术介绍
在程序运行的过程中会不断占用和释放内存,程序占用的内存块可分为栈区和堆区。在对程序中的内存块进行内存释放时,栈区的内存块可由编译器自动释放,而堆区的内存块则需要由技术人员主动申请释放。在现有技术中,通过对堆区的每个内存块进行单独的管理来进行内存释放,当接收到技术人员发送的释放内存块的申请时,调用与所需释放内存的内存块对应的指针对该内存块进行内存释放。但是,由于通过对每个内存块进行单独的管理来进行内存释放,不仅需要庞大的工作量,还容易出现内存泄漏现象。
技术实现思路
有鉴于此,本专利技术目的在于提供一种内存管理方法及装置,以解决现有技术中通过对每个内存块进行单独的管理来进行内存释放,不仅需要庞大的工作量,还容易出现内存泄漏现象的问题。为实现上述目的,本专利技术提供如下技术方案:本专利技术第一方面公开了一种内存管理方法,包括:当接收到释放内存块的请求时,判断待释放的内存块类型, ...
【技术保护点】
1.一种内存管理方法,其特征在于,所述方法包括:/n当接收到释放内存块的请求时,判断待释放的内存块类型,所述内存块类型包括父内存块和子内存块;/n若所述待释放的内存块类型为父内存块,基于预先构建的内存块结构,删除所述父内存块以及子内存块链表中的每一个子内存块,其中,所述预先构建的内存块结构包括父内存块和子内存块链表,所述子内存块链表包括N个子内存块,所述N为大于等于1的正整数;/n若所述待释放的内存块类型为子内存块,基于预先构建的内存块结构,将所述子内存块从所属的子内存块链表中删除,并更新所述子内存块链表。/n
【技术特征摘要】
1.一种内存管理方法,其特征在于,所述方法包括:
当接收到释放内存块的请求时,判断待释放的内存块类型,所述内存块类型包括父内存块和子内存块;
若所述待释放的内存块类型为父内存块,基于预先构建的内存块结构,删除所述父内存块以及子内存块链表中的每一个子内存块,其中,所述预先构建的内存块结构包括父内存块和子内存块链表,所述子内存块链表包括N个子内存块,所述N为大于等于1的正整数;
若所述待释放的内存块类型为子内存块,基于预先构建的内存块结构,将所述子内存块从所属的子内存块链表中删除,并更新所述子内存块链表。
2.根据权利要求1所述的方法,其特征在于,所述内存块结构的预先构建过程,包括:
指定父内存块以及与所述父内存块具有双向指向关系的N个子内存块;其中,所述父内存块包括预先分配的内存空间和固定内存空间;
根据所述父内存块的子内存块链表指针的指向,确定所述N个子内存块的顺序;
根据确定顺序的所述N个子内存块得到子内存块链表;
根据所述子内存块链表和所述父内存块构建内存块结构;
其中,所述预先分配的内存空间用于存储所述父内存块的子内存块链表指针、各个子内存块对应的父指针以及各个子内存块对应的连接指针。
3.根据权利要求2所述的方法,其特征在于,若存在与所述子内存块具有双向指向关系的次子内存块,所述根据确定顺序的所述N个子内存块得到子内存块链表,包括:
根据所述子内存块的次子内存块链表指针的指向,确定所述子内存块对应的次子内存块构成的次子内存块链表;
根据确定顺序的所述N个子内存块和所述次子内存块链表,得到子内存块链表。
4.根据权利要求1所述的方法,其特征在于,所述若所述待释放的内存块类型为父内存块,基于预先构建的内存块结构,删除所述父内存块以及子内存块链表中的每一个子内存块,包括:
若所述待释放内存块的类型为父内存块,基于预先构建的内存块结构,依次删除子内存块链中的每一个子内存块以及所述父内存块。
5.根据权利要求1所述的方法,其特征在于,所述若所述待释放的内存块类型为子内存块,基于预先构建内存块结构,将所述子内存块从所属的子内存块链表中删除,并更新所述子内存块链表,包括:
若所述待释放的内存块类型为子内存块,基于预先构建的内存块结构,将所述子内存块从所属子内存块链...
【专利技术属性】
技术研发人员:马龙,
申请(专利权)人:苏州浪潮智能科技有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。