FreeRTOS 内存管理

内存管理指的是对一块内存重复使用的功能,通过malloc 和 free来对外提供接口。

Freertos 内存管理不属于Freertos 内核模块,比较独立,Freertos 官方给了5种管理方式,分别为heap_1.c,heap_2.c,heap_3.c,heap_4.c,heap_5.c,除了heap_3.c (堆空间在CPU主堆栈上)之外,其他4种用的堆空间都是一个全局数组(static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]),这5种区别如下:

序号

支持malloc

支持free

heap_1.c

支持,按照地址+长度的方式依次从低地址向高地址分配。

支持。

heap_2.c

支持,将所有空闲块用链表的形式连接起来,连接方式是块大小从小到大依次连接,固定一个开始节点和结束节点,这里的开始节点大小为0,结束节点大小为堆空间的值。

支持,free 之后,将节点插入到空闲块链表中,不对块大小进行合并(因为地址可能不是连续的,所以不能合并)。

heap_3.c

支持,只是封装了标准库的malloc,堆空间是在CPU的主堆栈中,Cortex-M3 默认是500Byte,具体实现可以看标准库源码。

支持,只是封装了标准库的free,具体实现可以看标准库源码。

heap_4.c

支持,将所有空闲块用链表的形式连接起来,连接方式是块地址从低到高依次连接,固定一个开始节点和结束节点。

支持,free 之后,将节点插入到空闲块链表中,对块大小进行合并,需要判断即将插入的块的前后是否有空闲块可以合并。

heap_5.c

支持,在heap_4.c的基础上,增加了多个堆区的功能。

支持,和heap_4.c 实现一样。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值