-
- В embedded динамическое выделение нужно, когда памяти сразу на все не хватает. quarz(76 знак., 22.05.2017 01:15)
- В том, что многие готовые библиотеки без этого не работают. К примеру, lwip. - SciFi(19.05.2017 10:07)
- А вот задумался... как работает malloc-free, ну скажем в Иаре. Там ведь должна быть таблица распределения, причем таблица распределения требует динамического выделения памяти. Рекурсия. - IBAH(19.05.2017 11:00)
- Обычный список свободных блоков. Все необходимые указатели хранятся в самом блоке (выделяется чуть больше памяти, чем заказано). - LightElf(19.05.2017 11:11)
- Погуглил яндекс... Как правило, используется страничное выделение. Страница считается свободной если свободны все блоки на странице, тяжелое наследие х86. Я бы сделал по другому (наверняка в эббедед компиляторах все так делают). Связанный список. IBAH(212 знак., 19.05.2017 11:47)
- Примерно похоже. Изначально весь пул - это один свободный элемент. Выделенная область исключается из списка, возвращаемая склеивается с соседними элементами, если является область получается непрерывной. Посмотрите реализацию pbuf.c как пример Хитрый Китаец(41 знак., 19.05.2017 17:38)
- Что мешает посмотреть в сорцах ИАРовой либы? Стратегий организации "кучи" чуть менее чем дохрена. И все -
плохиене универсальны. - LightElf(19.05.2017 12:58)- "Что мешает посмотреть в сорцах ИАРовой либы?" А где это конкретно? - IBAH(19.05.2017 15:32)
- Листайте ветку Ксении. - SciFi(19.05.2017 15:36)
- посмотрел... там на 200кБ исходник, разбирать лениво - IBAH(19.05.2017 18:57)
- xxmemxmalloc.c - 10988 байт. Видимо у меня какой-то другой Яр. - LightElf(19.05.2017 19:01)
- все равно лениво - IBAH(19.05.2017 19:49)
- Есть и чуть покороче от zltigo с электроникса. Andreas(19.05.2017 20:15)
- все равно лениво - IBAH(19.05.2017 19:49)
- xxmemxmalloc.c - 10988 байт. Видимо у меня какой-то другой Яр. - LightElf(19.05.2017 19:01)
- посмотрел... там на 200кБ исходник, разбирать лениво - IBAH(19.05.2017 18:57)
- Листайте ветку Ксении. - SciFi(19.05.2017 15:36)
- "Что мешает посмотреть в сорцах ИАРовой либы?" А где это конкретно? - IBAH(19.05.2017 15:32)
- Погуглил яндекс... Как правило, используется страничное выделение. Страница считается свободной если свободны все блоки на странице, тяжелое наследие х86. Я бы сделал по другому (наверняка в эббедед компиляторах все так делают). Связанный список. IBAH(212 знак., 19.05.2017 11:47)
- Обычный список свободных блоков. Все необходимые указатели хранятся в самом блоке (выделяется чуть больше памяти, чем заказано). - LightElf(19.05.2017 11:11)
- А вот задумался... как работает malloc-free, ну скажем в Иаре. Там ведь должна быть таблица распределения, причем таблица распределения требует динамического выделения памяти. Рекурсия. - IBAH(19.05.2017 11:00)
- Реально не смог без динамического там где где нужно было сделать устройство, которое работает по загружаемым профилям. Устройство на месте конфигурируется и работает как настроен. Что то вроде интерпретатора. - Nikolay801_(19.05.2017 10:04)
- Ненавижу динамическое выделение памяти. Такое ощущение, что "чистые" плюсисты вообще не понимают, что бывают статические и локальные объекты. Всё через
жоnew делают. Звиздец просто. =AlexD=(48 знак., 19.05.2017 07:42)- я ни разу не плюсист, никогда на нем не кодил, но динамическое выделение памяти использую всегда. abivan(797 знак., 19.05.2017 11:07)
- Сообщения одинакового размера? Если да - то почему в очереди указатели, а не сами сообщения? - =AlexD=(19.05.2017 12:15)
- сообщения разные, в зависимости от типа сообщения. ГовноФреертос(из коробки) так и работает, создает очередь из копий. И копирует себе при помещении в очередь и при вычитывании. Вот это оверхед(по времени), так оверхед. Причем очередь избыточна и abivan(51 знак., 19.05.2017 12:37)
- Никто не запрещает помещать в очередь указатели. Ваш КО. - LightElf(19.05.2017 12:59)
- попробуй, без обертки :-) abivan(266 знак., 19.05.2017 13:01)
- Обычно указатель и так есть, без сложных телодвижений. А если совсем серьезно - то правильнее всего сделаны виндовые сообщения. ID, WParam, LParam. Все вместе занимает всего 8 байт и чертовски универсально. - LightElf(19.05.2017 13:15)
- попробуй, без обертки :-) abivan(266 знак., 19.05.2017 13:01)
- Никто не запрещает помещать в очередь указатели. Ваш КО. - LightElf(19.05.2017 12:59)
- сообщения разные, в зависимости от типа сообщения. ГовноФреертос(из коробки) так и работает, создает очередь из копий. И копирует себе при помещении в очередь и при вычитывании. Вот это оверхед(по времени), так оверхед. Причем очередь избыточна и abivan(51 знак., 19.05.2017 12:37)
- Сообщения одинакового размера? Если да - то почему в очереди указатели, а не сами сообщения? - =AlexD=(19.05.2017 12:15)
- Аналогичное мнение в нашем колхозе. Динамическое выделение на самый крайний случай, когда объект должен создаваться в одном блоке, а использоваться в другом. Но мне кажется, что подобные методы полностью нарушают принципы структурного IBAH(90 знак., 19.05.2017 09:28)
- я ни разу не плюсист, никогда на нем не кодил, но динамическое выделение памяти использую всегда. abivan(797 знак., 19.05.2017 11:07)
- Дадзыбао на надежное ПО не рекомендуют использовать динамическое выделение после инициализации. Динамическое выделение требует тщательной обработки ситуаций нехватки ресурсов. - Хитрый Китаец(18.05.2017 21:45)
- Медленная программа становится ещё медленней.. Вот и все преимущества - argus98(18.05.2017 20:43)
- Для хорошего компилера - нет. Если структура, под которую ты динамически выделил память, статическая, то код, работающий с ней, успешно будет жить во FLASH, и иметь жесткие закодированные смещения относительно начала структуры. Т.е. при Evgeny_CD(85 знак., 18.05.2017 23:36)
- Где Вы увидели Хороший компилер? Во сне? Так он и мне снится периодически - только вот руки ещё не дошли.. - в реале - argus98(19.05.2017 00:17)
- Никто не запретит мне мечтать о прекрасном! Я в него верю! :) - Evgeny_CD(19.05.2017 00:21)
- Где Вы увидели Хороший компилер? Во сне? Так он и мне снится периодически - только вот руки ещё не дошли.. - в реале - argus98(19.05.2017 00:17)
- Для хорошего компилера - нет. Если структура, под которую ты динамически выделил память, статическая, то код, работающий с ней, успешно будет жить во FLASH, и иметь жесткие закодированные смещения относительно начала структуры. Т.е. при Evgeny_CD(85 знак., 18.05.2017 23:36)
- Мое ИМХО - библиотека не должна выделять память под объекты. В библиотечные функции должны передаваться указатели на объекты. А как ты выделил под них память (статически, на стеке или в куче) - это не библиотечное дело. - il-2(18.05.2017 20:32)
- Динамическое выделение полезно когда памяти нет чтобы статически объявить все что нужно. Пример: у меня в устройстве в зависимости от настроек используются разные протоколы обмена. Объекты, реализующие протоколы создаются динамически, чтобы AlexG(109 знак., 18.05.2017 20:17)
- Если память выделяется по запросу и освобождается в обратном порядке, то менеджер памяти вырождается в стек. Тоже может иметь смысл, если есть библиотечный код с malloc, подчинающийся этому правилу. - SciFi(18.05.2017 22:37)
- union %) - Николай Коровин(18.05.2017 22:11)
- неслабый бы такой union получился :) Хотя, может быть при отсутствии C++ для используемого микроконтроллера это и имело бы смысл - AlexG(18.05.2017 22:24)
- Мдас, интересненько :) Николай Коровин(260 знак., 18.05.2017 22:46)
- Ты сделал мой день! Chtulhu_Data Fhtagn - это переменная всего типа всего!!!! - Evgeny_CD(18.05.2017 22:52)
- у меня "тип всего" объявлен сейчас так: AlexG(294 знак., 18.05.2017 23:10)
- Пожизненный цик с гвоздями! Когда в разных местах компилер будет одну и ту же переменную трактовать как разное - будешь до второго пришествия баги вылавливать... - Evgeny_CD(18.05.2017 23:17)
- это используется исключительно вместе с указанием флагами в соседней переменной реального типа данных - AlexG(18.05.2017 23:25)
- Hand made RTTI в C? За тобой уже выехали! - Evgeny_CD(18.05.2017 23:33)
- Зачехли револьверы. А вот, например, printf() - это что? И не смей покушаться на святое :-) - SciFi(18.05.2017 23:36)
- О, тут я смущенно замолкаю :) - Evgeny_CD(18.05.2017 23:39)
- Зачехли револьверы. А вот, например, printf() - это что? И не смей покушаться на святое :-) - SciFi(18.05.2017 23:36)
- Hand made RTTI в C? За тобой уже выехали! - Evgeny_CD(18.05.2017 23:33)
- это используется исключительно вместе с указанием флагами в соседней переменной реального типа данных - AlexG(18.05.2017 23:25)
- Пожизненный цик с гвоздями! Когда в разных местах компилер будет одну и ту же переменную трактовать как разное - будешь до второго пришествия баги вылавливать... - Evgeny_CD(18.05.2017 23:17)
- у меня "тип всего" объявлен сейчас так: AlexG(294 знак., 18.05.2017 23:10)
- Ты сделал мой день! Chtulhu_Data Fhtagn - это переменная всего типа всего!!!! - Evgeny_CD(18.05.2017 22:52)
- Мдас, интересненько :) Николай Коровин(260 знак., 18.05.2017 22:46)
- неслабый бы такой union получился :) Хотя, может быть при отсутствии C++ для используемого микроконтроллера это и имело бы смысл - AlexG(18.05.2017 22:24)
- По-моему это те же яйца, только в профиль. :) Надо смотреть, скока памяти отжирает, та или иная реализация. У меня почти все классы статические. - Звероящер(18.05.2017 20:11)