FreeRTOS —— Memory Management

本文详细介绍了FreeRTOS的内存管理,包括Stack与Heap的区别,动态内存分配的五种方式(Heap_1到Heap_5)及其特点。Heap_1不支持释放,适用于系统初始化;Heap_2能释放但不整合内存;Heap_3使用C库的malloc/free;Heap_4能整合内存块;Heap_5可自定义RAM块大小。同时提到了内存分配失败的回调函数vApplicationMallocFailedHook。
摘要由CSDN通过智能技术生成

Memory Management

名词解释:heap segmentationRAM 中没有一块完整的内存空间以满足内存申请需求,但是总的剩余空间大于需求的情况。这就表现了分配算法的重要性。

Stack & Heap

stack(栈),有时也称为 frame(帧)。一帧里存放了一个子过程(subroutine,其实也就是函数) 的信息。这些信息包括函数的返回地址和传入参数。当函数中再调用函数时,这些信息会放入堆栈中,而函数返回时,这些信息出栈并恢复到寄存器中。

函数中每定义一个变量,就会将其存储到栈中。函数返回时,释放整个栈空间。栈的优点在于,分配的整个栈空间都可供函数使用,无需再动态分配或者释放空间。

总结:

  • the stack grows and shrinks as functions push and pop local variables
  • there is no need to manage the memory yourself, variables are allocated and freed automatically
  • the stack has size limits
  • stack variables only exist while the function that created them, is running

Heap 是动态分配的空间,由操作系统管理*(不再跟栈一样单独为函数管理)*。堆中的空间在程序执行时可以分配,释放,改变大小。这些操作通过 mallocfree 实现。

Stack:

  • very fast access
  • don’t have to explicitly de-allocate variables
  • space is managed efficiently by CPU, memory will not become fragmented
  • local variables only
  • limit on stack size (OS-dependent)</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值