Статическое выделение памяти
Подход, при котором каждый нужный программе байт резервируется при компоновке, так что во время работы ничего запрашивать не приходится.
На микроконтроллере с 32 КБ ОЗУ и сроком службы в годы malloc — скорее обуза, чем удобство. Куча медленно фрагментируется, выделение может провалиться на третьей неделе эксплуатации, а сколько оно займёт времени, никому не известно. MISRA C прямо запрещает динамическое выделение, и многие стандарты безопасности требуют того же.
Альтернатива — глобальные буферы, статические стеки и пулы фиксированных блоков. Тогда компоновщик при сборке сообщает точный расход ОЗУ — нехватка памяти превращается в ошибку сборки, а не в падение у заказчика. Именно поэтому в FreeRTOS версии 9 появились функции вроде xTaskCreateStatic: стеки задач и управляющие блоки тоже могут жить вне кучи.