[发明专利]一种动态内存分配方法在审
申请号: | 202110734591.5 | 申请日: | 2021-06-30 |
公开(公告)号: | CN113419858A | 公开(公告)日: | 2021-09-21 |
发明(设计)人: | 叶德焰;任赋;林雅;许学泽 | 申请(专利权)人: | 明见(厦门)技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 厦门市精诚新创知识产权代理有限公司 35218 | 代理人: | 蔡金塔 |
地址: | 361000 福建省厦门市*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 内存 分配 方法 | ||
本发明涉及一种动态内存分配方法,其可包括以下步骤:定义节点头信息,节点头信息包括节点的已使用长度ulen和next指针;内存初始化,将内存池初始化成仅有开始节点和末尾节点的单向链表结构;内存分配,从开始节点开始查找剩余的空间长度大于申请内存的长度的节点,找到后判断该节点的ulen是否等于0,若是,则将该节点的ulen的值改为申请内存的长度,否则在该节点后创建一个新节点,并将该节点的next指针指向新节点;内存释放,当释放内存时,若释放的是开始节点,则只要将开始节点的ulen赋值为0即可,否则只需要将的前一节点的next指针指到下一节点即可。本发明无需进行复杂运算,仅需对参数ulen和next指针进行操作,执行代码简单,效率高。
技术领域
本发明涉及嵌入式电子设备领域,具体地涉及一种小内存嵌入式电子设备的动态内存分配方法。
背景技术
在嵌入式电子设备中,其内存(RAM)一般都比较小。为了充分利用有限的内存空间,需要对内存进行动态分配。中国发明专利申请CN103678152A公开了小内存微型控制器零碎片的动态内存分配方法,通过内存初始化、内存分配和内存释放三个步骤,可以有效地利用内存,不产生碎片。但这种方法需要知道每个分配成功的内存单元的起始地址,结束地址和长度,并且在释放的时候,需要判断之前内存单元是否已经被释放,释放了才合并,执行代码比较复杂,效率低。
发明内容
本发明旨在提供一种动态内存分配方法,以解决上述问题。为此,本发明采用的具体技术方案如下:
一种动态内存分配方法,其可包括以下步骤:
定义节点头信息,节点头信息包括节点的已使用长度ulen和next指针;
内存初始化,将内存池初始化成仅有开始节点和末尾节点的单向链表结构,其中,开始节点的ulen=0,next指针指向末尾节点;末尾节点的next指针为空,即next=NULL;
内存分配,当申请内存时,从开始节点开始查找剩余的空间长度大于等于申请内存的长度的节点,找到后判断该节点的ulen是否等于0,若是,则将该节点的ulen的值改为申请内存的长度,否则在该节点后创建一个新节点,并将该节点的next指针指向新节点,新节点的ulen值等于申请内存的长度,next指针指向下一个节点;
内存释放,当释放内存时,若释放的是开始节点,则只要将开始节点的ulen赋值为0即可,否则只需要将该节点的前一节点的next指针指到该节点的下一节点即可。
进一步地,节点的剩余空间长度LR的计算公式为:LR=nextblock-curblock-ulen-8-8,其中,curblock表示当前节点的起始地址,nextblock表示下一节点的起始地址,第一个8表示当前节点头信息所占字节数,第二个8表示新创建的下一个节点头信息所占字节数。
进一步地,ulen和next指针的长度均为4个字节。
本发明采用上述技术方案,具有的有益效果是:无需进行复杂运算,仅需对参数ulen和next指针进行操作,执行代码简单,效率高。
附图说明
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
图1是本发明的动态内存分配方法的流程图;
图2是内存初始化的示意图;
图3是第一次内存分配的示意图;
图4是第二次内存分配的示意图;
图5是第一内存节点释放的示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于明见(厦门)技术有限公司,未经明见(厦门)技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110734591.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种办公楼内部装修施工工艺
- 下一篇:一种激光器动态固定装置