Каждое задание съедает кучу, хотя задачи-исполнители удаляют себя
Под каждое задание создаётся задача со стеком 1024 слова, которая в конце вызывает vTaskDelete(NULL). Кроме них в системе есть задача monitor с приоритетом 2, которая в цикле проверяет состояние периферии без блокирующих вызовов.
После каждого задания xPortGetFreeHeapSize() уменьшается примерно на 4 КБ, и через час xTaskCreate возвращает ошибку. Куча — heap_4. В чём причина?
- Память удалённых задач освобождает idle-задача
- vTaskDelete(NULL) не освобождает стек в heap_4
- Удалять задачу должна та, что её создала
- Стек задачи возвращается в кучу только при сбросе
