二、堆和栈

1、堆

(1)堆和栈是不同的东西。

(2)堆在计算机中有两种理解。这里介绍的是动态内存管理机制。

  • 堆是一种数据结构
  • 堆是一种动态内存管理机制。

(2)堆是一种动态内存管理机制,它允许程序在运行时动态地分配和释放内存。堆管理器提供了一组函数或操作,用于分配和释放堆内存。堆内存可以被程序中的不同部分共享,并且可以在程序运行时动态地分配和释放。

(3)Keil工程在中文目录下,仿真退出会出错。

2、栈

2.1、栈的概念

(1)栈(Stack)是一种只能在一端进行插入和删除操作的数据结构,具有先进后出的特性。

(2)在RTOS中,每个任务都得有自己得栈。

2.2、栈的功能

(1)内存管理:在编程中,栈通常用于管理内存。当程序调用一个函数时,函数的参数、返回地址会被压入栈中,变量也会被存储在栈中。当函数返回时,这些值将从栈中弹出,释放内存。这种方式简化了内存管理,确保不会提前释放内存在占用状态下的内存空间。

(2)表达式求值:栈可以用于解决表达式求值问题。通常情况下,表达式中的操作符和操作数必须按照特定的规则进行计算。栈可以帮助记录操作符状态,并计算操作数。

(3)问题的回溯:栈也常用于问题的回溯,即在出现错误或面临问题时,通过回溯栈中的信息来了解问题发生的情况。

(4)操作系统多任务模式:栈是构建出操作系统多任务模式的基础,但在具体的实现中,需要用汇编代码来实现栈的切换。

你可能感兴趣的:(FreeRTOS,数据结构,单片机,stm32)