реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> IAR DLib heap manager, как узнать размер свободной памяти в куче?
salvian
сообщение Jan 6 2010, 14:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 4-08-09
Пользователь №: 51 740



Перерыл почти всё, нигде не могу найти библиотечную функцию (видимо её вообще нет) или хотя бы самописную реализацию функции возвращающей количество байт свободного места в куче для DLib'овского менеджера памяти. Может кто занимался этим вопросом и подскажет варианты решения?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 6 2010, 21:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(salvian @ Jan 6 2010, 17:11) *
Перерыл почти всё, нигде не могу найти библиотечную функцию (видимо её вообще нет)

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

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

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jack_avenger
сообщение Jun 21 2010, 07:25
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



salvian
Как успехи? Удалось получить объем свободной кучи? У меня аналогичная проблема.

Чтоб написать свой менеджер памяти у меня опыта нет. Собственно знать объем свободной кучи мне и надо чтоб оценить насколько эффективно написан мой код и в случае чего подправить.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 21 2010, 08:26
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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

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


Не мучайтесь. Возьмите аллокатор BGET (http://www.fourmilab.ch/bget/). Он уже лет 40 как в работе. Там есть все, что нужо, в том числе и статистика использования кучи.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jun 21 2010, 08:50
Сообщение #5


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



А мне всегда казалось, что размер кучи не определяют, а задают в проекте (там же, где задаются размеры стека/ов). Так зачем же определять, да еще и с помощью библиотечной функции, то, что заранее жестко задано?
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 21 2010, 09:38
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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


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

Второе. Никак не пойму коллег. Столько дебатов всегда вокруг "стандартных" библиотек, которые поставляются как черные ящики. Под себя из исходников можно такую библиотеку за пару дней сделать. Всегда все будет понятно, что к чему.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jun 21 2010, 10:45
Сообщение #7


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



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

Ничего подобного - исходники библиотек лежат в \scr\lib\, где с ними можно ознакомиться. А при желании даже перекомпилировать библиотеку по своему вкусу. Если у вас нет исходников, то это означает только то, что вы пользуетесь EV или KS версией компилятора, а не FULL.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 21 2010, 17:00
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 21 2010, 17:07
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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


1. Если есть исходники, надо их почитать, понять и не морочить остальным голову.
2. Исходники исходникам рознь.
3. У меня все, что нужно - есть. И ветку эту не я затеял.
Go to the top of the page
 
+Quote Post
salvian
сообщение Aug 31 2011, 15:19
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 4-08-09
Пользователь №: 51 740



лучше поздно, чем никогда:

__iar_dlmallinfo()
__iar_dlmalloc_stats()

подробнее: http://supp.iar.com/Support/?note=28545
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 23:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01508 секунд с 7
ELECTRONIX ©2004-2016