Это зависит от того, как расширилось значение «встроенного», на мой взгляд, за последние 4 года.
Традиционно на встроенных устройствах были установлены микроконтроллеры и, как правило, отсутствует операционная система. Нет защищенной памяти, и были однопоточными. Вы должны быть чрезвычайно осторожны с недопустимой памятью, потому что ее так легко исчерпать, например, если у вас есть только 32 КБ. В общем, мы пишем наш код с буферами фиксированного размера и никогда не используем malloc или at, если он использовался каждый - очень экономно.
В последние несколько лет мы видим, что представляют собой однопроцессорные ПК или микроплаты, которые так же мощны, как и наши старые ПК Pentium. Цены на оперативную память сейчас настолько низки и настолько малы, что ограничения памяти совсем не такие, как раньше. Они также часто используют встроенный Linux или Wince, так что теперь у нас есть возможность более свободно использовать динамическую память.
Это дает возможность использовать гораздо более широкий диапазон языков, включая Java, C ++, многие языки сценариев и другие языки, которые обеспечивают защиту от переполнения буфера и обработку исключений, а также другие языки более высокого уровня. Так что, на самом деле, эти старые проблемы не такие, как раньше.
Я подозреваю, что все это новое доступное оборудование порождает новые проблемы.