FreeRTOS: vTaskDelete vs vPortFree 内存释放差异
vTaskDelete 和 vPortFree 都是 FreeRTOS 中用于释放内存的函数,但它们释放内存的方式不同。
vTaskDelete 函数用于删除一个任务。当任务被删除时,任务所占用的堆栈空间以及任务控制块 (TCB) 都会被释放。这意味着 vTaskDelete 函数释放的内存仅限于任务使用的堆栈空间和 TCB,而不包括任务使用的其他内存区域。
vPortFree 函数用于释放由 pvPortMalloc 函数分配的内存。它将释放在堆中动态分配的内存块,包括任务堆栈空间、TCB 以外的所有内存。因此,vPortFree 函数释放的内存包括任务使用的所有内存区域。
因此,vTaskDelete 和 vPortFree 释放的内存有所不同:
- vTaskDelete 只释放任务的堆栈空间和 TCB。
- vPortFree 释放任务使用的所有内存。
原文地址: https://www.cveoy.top/t/topic/nBGW 著作权归作者所有。请勿转载和采集!