heap_4 内存分配方法
heap_4 提供了一个最优的匹配算法,不像 heap_2,heap_4 会将内存碎片合并成一个大的可用内存块,它提供了内存块合并算法。内存堆为 ucHeap[],大小同样为 configTOTAL_HEAP_SIZE。可以通过函数 xPortGetFreeHeapSize()来获取剩余的内存大小。
heap_4 特性如下:
1、可以用在那些需要重复创建和删除任务、队列、信号量和互斥信号量等的应用中。
2、不会像 heap_2 那样产生严重的内存碎片,即使分配的内存大小是随机的。
3、具有不确定性,但是远比 C 标准库中的 malloc()和 free()效率高。
heap_4 非常适合于那些需要直接调用函数 pvPortMalloc()和 vPortFree()来申请和释放内存 的应用。
heap_4 也使用链表结构来管理空闲内存块,链表结构体与 heap_2 一样。heap_4 也定义了两个局部静态变量 xStart 和 pxEnd 来表示链表头和尾,其中 pxEnd 是指向 BlockLink_t 的指针。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
嵌入式
+关注
关注
4982文章
18281浏览量
288430 -
内存
+关注
关注
8文章
2767浏览量
72764 -
FreeRTOS
+关注
关注
12文章
473浏览量
61347
发布评论请先 登录
相关推荐
基于FreeRTOS内存管理Heap_4.c的实现方法
一下,哈哈。 既然是在FreeRTOS内存管理Heap_4.c的基础上稍稍修改的,那还是先介绍一下它的实现方法吧:以下为转载内容,原文链接:http://xilinx.eetrend.
发表于 07-15 21:46
鸿蒙内核源码分析(内存分配篇):内存的分配方式有哪些
space),应用程序运行在用户空间(user space), 在运行期间需动态分配的向堆空间(heap space)申请内存。具体看代码会更清晰些。从空间的初始化调用关系上可以看出只有这三种空间,所
发表于 11-20 10:07
基于嵌入式裸机或RTOS系统下内存管理方法的探究
小故障调试能力:发生内存泄漏和踩踏时,可追溯位置,便于定位故障管理成本小:管理的代码本身占用空间小,从空间复杂度申请和释放效率高:时间复杂度FreeRTOS的heap_5算法相比 heap_4 支持地址不连续的两个
发表于 12-17 07:40
一种嵌入式系统的内存分配方案
嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快。因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单、快速的
发表于 05-24 14:30
•2029次阅读
FreeRTOS代码剖析之4:内存管理Heap
FreeRTOS8.0.1内存管理的最后一个堆模型Heap_4,貌似是在这一个版本才有的。所以找到的说明几乎没有。代码的开头注释也只是简单地说了一下实现了pvPortMalloc
发表于 02-09 02:52
•258次阅读
FreeRTOS代码剖析之1:内存管理Heap
_1.c只是简单地实现了pvPortMalloc()这一个函数,这个堆的实现方案并不允许已分配的内存再次被释放。(The simplest possible implementation of pvPortMalloc(). Note that this implemen
发表于 02-09 05:25
•765次阅读
FreeRTOS代码剖析之2:内存管理Heap
在FreeRTOS8.0.1这个版本中,一共有四个内存堆模型。这一次讲的就是第二个模型Heap_2.c。从一开始就可以看到注释中对Heap_2的模型解释:这是对pvPortMalloc
发表于 02-09 05:28
•629次阅读
浅谈内存分配方式 避免内存浪费问题
说到内存的分配方式,就不得不提连续分配方式。这种方式是指为一个用户程序分配一个连续的内存空间,它曾被广泛的用于20世纪60~70年代的OS中
发表于 03-03 11:22
•1273次阅读
heap_1内存分配方法
heap_1 内存分配方法 动 态 内 存 分 配 需 要 一 个 内 存 堆 , FreeRTOS 中 的 内 存 堆 为 ucHeap
评论