-
- Статическое выделение + "динамическое использование"! Объединил в юнион несколько структур, которые не пересекаются в одно и то же время. плюс=расходов нет, минус= нужно помнить, кнешна, но это не сложно - VLLV(11.01.2025 17:22)
- Использую по мере необходимости. Чаще всего причина это или сторонний код использующий динамическое выделение (TCP-стек, например) или обработка данных в заранее совершенно неизвестном количестве (на столько, что не получается просто сразу заложить максимум). Пришлось добавить блокировку одновременного обращения к malloc из разных потоков и избавиться от тех сторонних библиотек, которые вызывали утечки памяти AlexG(120 знак., 09.01.2025 12:29)
- freertos требует динамическое выделение. Отдал ей пару килобайт с
памятью 1-го типа выделения. Всё остальное на статических задачах с
выделением памяти для них собственным аллокатором. Также и
межзадачные сообщения работают с выделенными/освобожденными
сегментами. Аллокатор построен на пулах памяти кратных степени
2-ки. Данный аллокатор использую еще со времен пика с озу 4кб. - abivan(09.01.2025 10:41)
- Freertos можно полностью статически закрутить. Версии апи с указателем на статический буфер. - klen(09.01.2025 19:05)
- Почитал ваши ответы, понял, что еще не дорос, какая-то мультипульность, стоковые аплокаторы... где изучить эту терминологию? - IBAH(08.01.2025 23:02)
- Случаи всякие бывают. Можно даже представить себе, что какая-то
библиотека выделяет что-то на старте и никогда не освобождает.
Ясно, что в этом случае всё очень просто. - SciFi(08.01.2025 22:41)
- Ну вот во freertos один из аллокаторов так и устроен - он вообще не
умеет free(), только malloc(). В большом проценте случаев этого
достаточно. - LightElf(09.01.2025 13:53)
- Это называется "stack"? Push, push, push! :-) - SciFi(09.01.2025 13:54)
- У меня как раз такой случай, формат данных формирует пользователь,
если переформирует, то можно и перезагрузится. - IBAH(08.01.2025 22:56)
- Тогда к чему голову ломать? Любой вариант malloc подойдёт, рисков ноль. - SciFi(09.01.2025 10:44)
- Ну вот во freertos один из аллокаторов так и устроен - он вообще не
умеет free(), только malloc(). В большом проценте случаев этого
достаточно. - LightElf(09.01.2025 13:53)
- я использую. считаю что пить можно и нужно. что бы печень не
пострадала от радости, это нужно делать грамотно. использую
самоперепиленные o1heap или tlsf. klen(705 знак., 08.01.2025 22:26, ссылка)
- Ничего не понял, но очень интересно! - IBAH(08.01.2025 22:57)
- почитать klen(1 знак., 08.01.2025 23:19, ссылка)
- Спасибо, кое-что проясняется - IBAH(09.01.2025 18:07)
- почитать klen(1 знак., 08.01.2025 23:19, ссылка)
- Ничего не понял, но очень интересно! - IBAH(08.01.2025 22:57)
- стараюсь не использовать. делал несколько пуловых аллокаторов - хватало. своё если упрётся в размер или фрагментацию, то знаю что делать. а там, где стоковый аллокатор обругался, уже можно комом огрести. ну и кучу оно обычно всю может зохавать, а пул сразу выдан известного предела. но если не грязно писано, то ничего страшного обычно в стоковых нет. ну и так как мусоросборщика никто не обещал, то при неровной нарезке ожидается фрагментация, а вопрос скорости в непервый раз Vit(286 знак., 08.01.2025 22:26)