FreeRTOS代码阅读笔记:heap_3.c

本文是关于FreeRTOS内存管理组件heap_3.c的阅读笔记,重点介绍了如何通过修改启动文件来改变内存堆,以及heap_3.c如何通过封装malloc()和free()函数,提供线程安全的内存分配,尽管这可能增加代码复杂性。
摘要由CSDN通过智能技术生成

FreeRTOS中对于内存的管理当前一共有5种实现方式(作者当前的版本是10.1.1),均在【 \Source\portable\MemMang 】下面,这里笔记下。

 pvPortMalloc() 和 vPortFree() 的实现是基于 malloc()和 free()实现的,此时configTOTAL_HEAP_SIZE 是无效的。

改变内存堆是通过修改启动文件来实现的。

heap3使得内存分配变得不确定性,可能会增加代码量。其特点是将标准函数的malloc()和free()函数封装,使其具有线程保护功能。

 

/// 

heap_3.c:

/*根据上面的注释可以知道,这里 pvPortMalloc() 和 vPortFree() 的实现是基于 malloc()和 free() 。
由于使用了标准C函数中的内存申请和释放,因此使用前一定要在工程中设置好堆内存。
*/

#include <stdlib.h>

/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining
all the API functions to use the MPU wrappers.  That should only be done when
task.h is included from an application file. */
#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE

#include "FreeRTOS.h"
#include
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值