Комментарии 2
Автор - сомнительный эксперт.
Историю с IoT-датчиком для умного дома с 128 КБ ОЗУ, скорее всего, выдумал.
Какая может быть динамическая память при таком объёме? Откуда он это взял?
Первое, на что он должен был напороться, - переполнение стеков.
Его мечты про стеки в 4–16 КБ - это артефакты больших операционок. А в таких девайсах 1 КБ уже роскошь.
Если он брал опенсорсный сетевой стек, то в них всех уже есть пулы пакетов фиксированной длины. Он не должен был вообще притягивать сюда динамическую память. Надо было в первую очередь озаботится глубиной пула.
Потом о какой «предсказуемости важнее гибкости» он может говорить в IoT-девайсе, где в любое мгновение может отвалиться связь? Там нет никакой такой важной предсказуемости.
Первое, что он должен был сделать, - реализовать получение памяти с таймаутом, как в большинстве RTOS сделано. Его датчики могут и подождать, пока память недоступна. А если всё равно недоступна, то выполнять ресет. IoT-девайсы ресет должны воспринимать как штатную операцию. Им всё равно в Deep Standby нужно переходить периодически с возвратом через ресет.
"malloc/free — неподходящий инструмент для встраиваемых систем"
Похоже, это ваше первое embedded изделие? Других причин для использования malloc я просто не могу представить.

Структуры данных на практике. Глава 19: Управление памятью в прошивках