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

pvPortMalloc возвращает NULL, хотя свободной кучи ещё 6 КБ

Прошивка собирается с heap_2.c. Сетевая задача выделяет буферы под сообщения разного размера (от 40 до 900 байт) и освобождает их после отправки. Через сутки работы:

xPortGetFreeHeapSize() = 6128
pvPortMalloc(512) = NULL

Утечек нет: число выделений и освобождений совпадает. В чём причина?

  • heap_2 не склеивает соседние свободные блоки
  • Размер кучи уменьшается при каждом вызове free
  • heap_2 выделяет память только блоками по 1 КБ
  • Нужно вызвать сборку мусора планировщика

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

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

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

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