Вступить в клуб →
сложнаявопросFreeRTOS: задачи, очереди и синхронизация

Каждое задание съедает кучу, хотя задачи-исполнители удаляют себя

Под каждое задание создаётся задача со стеком 1024 слова, которая в конце вызывает vTaskDelete(NULL). Кроме них в системе есть задача monitor с приоритетом 2, которая в цикле проверяет состояние периферии без блокирующих вызовов.

После каждого задания xPortGetFreeHeapSize() уменьшается примерно на 4 КБ, и через час xTaskCreate возвращает ошибку. Куча — heap_4. В чём причина?

  • Память удалённых задач освобождает idle-задача
  • vTaskDelete(NULL) не освобождает стек в heap_4
  • Удалять задачу должна та, что её создала
  • Стек задачи возвращается в кучу только при сбросе

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела