1.0 堆

1.1 基本概念

堆的本质是在 RAM 中的一段连续的内存区域,开发者可以主动申请一些内存块,其中与栈不同的是,堆的声明周期是完全由程序员进行控制的。

1.2 堆的管理机制

  • 动态性
  • 碎片化风险
  • 手动管理

1.3 例子

在 C/C++ 中,定义一个变量时,其存储位置取决于其定义位置上下文:

  • 如果在函数内定义,则其存储在栈中。
  • 若在全局或静态作用域定义,则存储在静态存储区。

真正的堆内存必须通过动态分配函数进行显示申请。

char heap_buf[1024];    // 若在函数内进行申请,则存储在栈中,函数结束后自动释放

-

char* heap_buf = (char*)malloc(1024);   // 显式申请堆内存

2.0 栈

2.1 基本概念

栈是一种先进后出的数据结构,其基本操作通常包括:压栈和弹栈。

2.2 栈的特点

  • 后进先出 (LIFO)
  • 高效性
  • 有限容量 (固定大小栈)
  • 自动管理:在嵌入式系统中,函数调用时使用的栈由编译器和处理器自动管理,无需程序员手动干预。

3.0 RTOS 如何使用栈

END 参考 & 声明

[参考]

  • FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS(FreeRTOS教程 基于STM32,以实际项目为导向) -> BV1Jw411i7Fz
本文部分内容由 Ai 辅助生成