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

 
 
> Получение свободного объема кучи, В ходе работы. CrossWorks 1.7.13
YChebisheva
сообщение Mar 24 2009, 09:14
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 9-01-09
Пользователь №: 43 070



Есть ли какие-нить макросы, чтобы в ходе работы можно было знать, к примеру, адрес начала, конца и сколько осталось свободного места в куче?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
FormatCft
сообщение Mar 24 2009, 09:51
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 331
Регистрация: 22-07-08
Из: Р О С С И Я
Пользователь №: 39 145



Цитата(YChebisheva @ Mar 24 2009, 14:14) *
Есть ли какие-нить макросы, чтобы в ходе работы можно было знать, к примеру, адрес начала, конца и сколько осталось свободного места в куче?

Лучше ипользовать какой-нибудь открытый аллокатор.

Можно взять "монументальный" TLSF. В составе есть get_used_size.


Ну а если со стандартным, то можно написать так:

1) Разметка всего хипа опред числом.

2) При маллоке портим значение выделяемой области. Меняем на др чилсло.

3) При осовбождении востанавливаем число.

4) При вычислении считаем количество "испорченных".

Этот метод позовляет вычислить с достаточной степенью точности +\- 10 километров (шутка).
Go to the top of the page
 
+Quote Post
klen
сообщение Mar 24 2009, 09:56
Сообщение #3


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



я использую FreeRTOS, там есть три реализации maloc/free, я взял одну из них и добавил в нее все что мне нада, в том числе и функцию возвращающуую остаток кучи, могу исходник кинуть если хотите
Go to the top of the page
 
+Quote Post
FormatCft
сообщение Mar 24 2009, 10:05
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 331
Регистрация: 22-07-08
Из: Р О С С И Я
Пользователь №: 39 145



Цитата(klen @ Mar 24 2009, 14:56) *
я использую FreeRTOS, там есть три реализации maloc/free, я взял одну из них и добавил в нее все что мне нада, в том числе и функцию возвращающуую остаток кучи, могу исходник кинуть если хотите

Из всех 3х реализаций ровно ноль нормальных (Исключительно ИМХО).

По-моему при создании фриртоса ставилась основная цель: сделать добротный движок, но не было цели сделать номальный аллокатор.


Потому как хороших открытых и закрытых (в средах разработки) аллокаторов довольно много. Выбирайте на любой вкус.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- YChebisheva   Получение свободного объема кучи   Mar 24 2009, 09:14
- - etoja   Цитата(YChebisheva @ Mar 24 2009, 12:14) ...   Mar 24 2009, 09:33
|- - FormatCft   Цитата(etoja @ Mar 24 2009, 14:33) Адрес ...   Mar 24 2009, 09:42
- - _Pasha   Цитата(YChebisheva @ Mar 24 2009, 12:14) ...   Mar 24 2009, 09:45
|- - klen   Цитата(FormatCft @ Mar 24 2009, 13:05) Из...   Mar 24 2009, 10:12
- - YChebisheva   Парни, у меня не стоит задача, оптимизировать рабо...   Mar 24 2009, 12:07
|- - _Pasha   Цитата(YChebisheva @ Mar 24 2009, 15:07) ...   Mar 24 2009, 12:24
|- - YChebisheva   Цитата(_Pasha @ Mar 24 2009, 15:24) Если ...   Mar 24 2009, 12:39
|- - _Pasha   Цитата(YChebisheva @ Mar 24 2009, 15:39) ...   Mar 24 2009, 13:04
- - YChebisheva   _Pasha, левые адреса возвращает: printf("%p...   Mar 24 2009, 13:14
|- - FormatCft   Цитата(YChebisheva @ Mar 24 2009, 18:14) ...   Mar 24 2009, 14:01
- - _Pasha   Это я глупость сморозил, должно быть так: Кодexte...   Mar 24 2009, 14:02
- - YChebisheva   Спасибо. Всё работает   Mar 25 2009, 08:49


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

 


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


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