Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR DLib heap manager
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
salvian
Перерыл почти всё, нигде не могу найти библиотечную функцию (видимо её вообще нет) или хотя бы самописную реализацию функции возвращающей количество байт свободного места в куче для DLib'овского менеджера памяти. Может кто занимался этим вопросом и подскажет варианты решения?
zltigo
Цитата(salvian @ Jan 6 2010, 17:11) *
Перерыл почти всё, нигде не могу найти библиотечную функцию (видимо её вообще нет)

Здравая мысль smile.gif
Цитата
или хотя бы самописную реализацию функции возвращающей количество байт свободного места в куче для DLib'овского менеджера памяти.

Без знания организации менеджера и доступа к его структурам это невозможно. Но исходники в pro версиях есть.
Цитата
Может кто занимался этим вопросом и подскажет варианты решения?

Поскольку простейший менеджер яйца выеденного не стоит, то напишите/возьмите самописный. Один из вариантов (с комментариями почему именно так сделано) под свои нужды я даже на этом форуме выкладывал.
jack_avenger
salvian
Как успехи? Удалось получить объем свободной кучи? У меня аналогичная проблема.

Чтоб написать свой менеджер памяти у меня опыта нет. Собственно знать объем свободной кучи мне и надо чтоб оценить насколько эффективно написан мой код и в случае чего подправить.
sergeeff
Цитата(jack_avenger @ Jun 21 2010, 10:25) *
salvian
Как успехи? Удалось получить объем свободной кучи? У меня аналогичная проблема.

Чтоб написать свой менеджер памяти у меня опыта нет. Собственно знать объем свободной кучи мне и надо чтоб оценить насколько эффективно написан мой код и в случае чего подправить.


Не мучайтесь. Возьмите аллокатор BGET (http://www.fourmilab.ch/bget/). Он уже лет 40 как в работе. Там есть все, что нужо, в том числе и статистика использования кучи.
Xenia
А мне всегда казалось, что размер кучи не определяют, а задают в проекте (там же, где задаются размеры стека/ов). Так зачем же определять, да еще и с помощью библиотечной функции, то, что заранее жестко задано?
sergeeff
Цитата(Xenia @ Jun 21 2010, 11:50) *
А мне всегда казалось, что размер кучи не определяют, а задают в проекте (там же, где задаются размеры стека/ов). Так зачем же определять, да еще и с помощью библиотечной функции, то, что заранее жестко задано?


Речь идет, насколько я понимаю, именно о статистике загрузки кучи, а не о ее объеме. А именно, сколько блоков выделено, сколько памяти осталось и прочее. Очень полезно это знать при отладке на предмет оценки утечек памяти, например.

Второе. Никак не пойму коллег. Столько дебатов всегда вокруг "стандартных" библиотек, которые поставляются как черные ящики. Под себя из исходников можно такую библиотеку за пару дней сделать. Всегда все будет понятно, что к чему.
Xenia
Цитата(sergeeff @ Jun 21 2010, 13:38) *
Второе. Никак не пойму коллег. Столько дебатов всегда вокруг "стандартных" библиотек, которые поставляются как черные ящики. Под себя из исходников можно такую библиотеку за пару дней сделать. Всегда все будет понятно, что к чему.

Ничего подобного - исходники библиотек лежат в \scr\lib\, где с ними можно ознакомиться. А при желании даже перекомпилировать библиотеку по своему вкусу. Если у вас нет исходников, то это означает только то, что вы пользуетесь EV или KS версией компилятора, а не FULL.
zltigo
QUOTE (Xenia @ Jun 21 2010, 11:50) *
а задают в проекте...

Крайне порочный вариант sad.gif используемый в примитивных менеджерах. Heap должна отдаваться вся оставшаяся свободная память, иначе дурдом - память есть, но не используется.

QUOTE (jack_avenger @ Jun 21 2010, 10:25) *
Чтоб написать свой менеджер памяти у меня опыта нет.

Ну так я уже писал, что на этом форуме выкладывал http://electronix.ru/forum/index.php?showt...mp;#entry746045
sergeeff
Цитата(Xenia @ Jun 21 2010, 13:45) *
Ничего подобного - исходники библиотек лежат в \scr\lib\, где с ними можно ознакомиться. А при желании даже перекомпилировать библиотеку по своему вкусу. Если у вас нет исходников, то это означает только то, что вы пользуетесь EV или KS версией компилятора, а не FULL.


1. Если есть исходники, надо их почитать, понять и не морочить остальным голову.
2. Исходники исходникам рознь.
3. У меня все, что нужно - есть. И ветку эту не я затеял.
salvian
лучше поздно, чем никогда:

__iar_dlmallinfo()
__iar_dlmalloc_stats()

подробнее: http://supp.iar.com/Support/?note=28545
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.