vTaskDelete 和 vPortFree 都是 FreeRTOS 中用于释放内存的函数,但它们释放内存的方式不同。

vTaskDelete 函数用于删除一个任务。当任务被删除时,任务所占用的堆栈空间以及任务控制块 (TCB) 都会被释放。这意味着 vTaskDelete 函数释放的内存仅限于任务使用的堆栈空间和 TCB,而不包括任务使用的其他内存区域。

vPortFree 函数用于释放由 pvPortMalloc 函数分配的内存。它将释放在堆中动态分配的内存块,包括任务堆栈空间、TCB 以外的所有内存。因此,vPortFree 函数释放的内存包括任务使用的所有内存区域。

因此,vTaskDelete 和 vPortFree 释放的内存有所不同:

  • vTaskDelete 只释放任务的堆栈空间和 TCB。
  • vPortFree 释放任务使用的所有内存。
FreeRTOS: vTaskDelete vs vPortFree 内存释放差异

原文地址: https://www.cveoy.top/t/topic/nBGW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录