ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
813904 Топик полностью
fk0, легенда (02.02.2018 13:48, просмотров: 487) ответил VVB на Как правило, почти все стандарты проектирования для критических систем закладывают запрет на динамическое выделение памяти. Стандартная библиотека идёт лесом. ТОЧКА.
Заколебался писать ответ, сахара опять зависла. Вкратце: во-первых так называемые стандарты не являются таковыми (это не ГОСТ или ISO), во-вторых практический embedded сильно далёк от них, в-третьих в рамках таких "стандартов" попросту невозможна реализация ряда алгоритмов, а в ряде других случаев замена динамического аллокатора статическим распределением кончается чудовищными требованиями к объёмам ОЗУ. И предлагать стек, который заведомо _моментально_ кончается, вместо нормального аллокатора -- это просто шизофреническая идея. Про отрицание аллокатора же надо сказать, что это байка того же уровня, что стандартную библиотеку или C++ нельзя использовать (а индусский говнокод и самодельные кривые эрзац-аллокаторы вместо -- можно, да?), что там жуткая фрагментация (да, КПД относительно хорошего аллокатора может опускаться ниже 50% и это зараннее нужно учитывать). Не нравится аллокатор -- откажись от указателей вообще и возьми язык с garbage collector и без указателей (а-ля лисп), проблема фрагментации уйдёт как класс, но вопрос (не)исчерпания ресурсов же по прежднему останется. Равно как этот вопрос есть и в системе где всё статически (и которые скорей невозможны, для сколько-нибудь сложной системы), если что-то преаллоцируют и начинают распределять вручную. Здесь же вопрос не в аллокаторе -- с аллокатором нет принципиальных проблем, вопрос в корректности функционирования алгоритма для всех возможных условиях и к аллокатору он вообще никаким боком.
[ZX]