

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 内核内存分配


每次在创建任务、队列或其他 RTOS 对象时，RTOS 内核都需要 RAM。RAM 可采用以下分配方式：
+ 在编译时静态分配。
+ 由 RTOS API 对象创建函数从 RTOS 堆动态分配。

在动态创建 RTOS 对象时，使用标准 C 库 `malloc()` 和 `free()` 函数并不始终恰当，原因如下：
+ 它们在嵌入式系统中可能不可用。
+ 它们占用了宝贵的代码空间。
+ 它们通常不是线程安全的。
+ 它们不是确定性的。

出于这些原因，FreeRTOS 会在其可移动层保留内存分配 API。可移动层位于实施核心 RTOS 功能的源文件外部，因此您可以针对正在开发的实时系统，提供特定于应用程序的适当实施。当 RTOS 内核需要 RAM 时，它会调用 `pvPortMalloc()`，而不是 `malloc()`()。在释放 RAM 时，RTOS 内核调用 `vPortFree()`，而不是 `free()`。