|
|
 |
Ответов
|
Jun 20 2012, 07:18
|

Знающий
   
Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053

|
Я тут немного поразмыслил и пришел к выводу что дефрагментация кучи это практически невыполнимая задача без костылей. Вначале я быстро прикинул алгоритм примерно такой. При выделении памяти в начале кучи выделяется собственно память а с конца (например, можно и в начале) выделяется указатели на понтеры, которые собственно и "получат память". Тогда выделение памяти будет выглядеть не так: byte *p = alloc(100); а так byte *p; alloc(&p,100); if(p!=NULL)... Делается это для того, что бы сохранить адрес понтера, и при дефрагментации кучи мы могли бы занести туда новое значение адреса. Но поразмыслив я понял что это накладывает кучу ограничений. Нельзя использовать: byte *pp,*p = alloc(100); pp = p; или p += x; т.е. изменять адрес Придётся использовать функции которые грамотно копировали бы поинтеры. Использовать **p тоже не хочется, усложнение на пустом месте. Есть ли простой способ, без костылей, дефрагментировать кучу?
--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
|
|
|
|
Сообщений в этой теме
Beginning Кто какую реализацию использует для распределения памяти на cortex? Jun 19 2012, 13:48 shmur Пользуемся tlsf, пока всем устраивает. Jun 19 2012, 13:59 Сергей Борщ Имени zltigo. И на Cortex и на ARM7 Jun 19 2012, 14:34 Beginning Блин, нашёл тему близнец тыц Можно склеить. Jun 19 2012, 14:51 IgorKossak Склеил бы, да руки не достают. Тем более, что здес... Jun 19 2012, 17:11 brag Вот и моя близняшка http://electronix.ru/forum/ind... Jun 19 2012, 22:28 scifi Цитата(Beginning @ Jun 20 2012, 11:18) Ес... Jun 20 2012, 07:29 Beginning Картина собственно ясна. А теперь вопрос. Стоит ли... Jun 20 2012, 07:40 jcxz Цитата(Beginning @ Jun 20 2012, 13:40) Ка... Jun 20 2012, 09:13 brag Забудьте про дефраг. Дефрагментация уместна только... Jun 20 2012, 09:40 _Pasha Если Вы можете выделить сколь-нибудь детерминирова... Jun 20 2012, 11:43 Beginning Я уже писал про **p. Придётся везде лепить. А пото... Jun 20 2012, 12:05 maksimp Практическая реализация дефрагментации без аппарат... Jun 20 2012, 17:19 Beginning Я так понимаю это компромис. Зарезервировал память... Jun 20 2012, 18:35 aaarrr Цитата(Beginning @ Jun 20 2012, 22:35) По... Jun 20 2012, 18:37 maksimp Цитата(Beginning @ Jun 20 2012, 22:35) За... Jun 21 2012, 04:10 Beginning Не ну я прикидывал, мол если например кусок не раз... Jun 20 2012, 19:12 _Pasha Цитата(Beginning @ Jun 20 2012, 22:12) Не... Jun 20 2012, 20:21 Beginning Ну хотябы, если дефрагментация началась, то её уже... Jun 20 2012, 20:35 _Pasha Цитата(Beginning @ Jun 20 2012, 23:35) Ну... Jun 21 2012, 05:12 Beginning Наверняка так и есть. Но по поводу этого я не силь... Jun 21 2012, 06:16 _Pasha Цитата(Beginning @ Jun 21 2012, 09:16) Пр... Jun 21 2012, 07:39 Beginning Я не очень понимаю выражения "не использовать... Jun 21 2012, 08:30 _Pasha Цитата(Beginning @ Jun 21 2012, 11:30) Я ... Jun 21 2012, 09:22 jcxz Цитата(Beginning @ Jun 21 2012, 14:30) Я ... Jun 22 2012, 02:45  Axel Цитата(jcxz @ Jun 22 2012, 05:45) Поэтому... Jun 22 2012, 13:39 Beginning Ну тут я вижу потенциальную проблему. Допустим пам... Jun 21 2012, 09:33 brag ЦитатаЯ уже писал про **p. Придётся везде лепить. ... Jun 21 2012, 09:58 maksimp Цитата(brag @ Jun 21 2012, 13:58) ЦитатаG... Jun 21 2012, 19:13 brag ЦитатаDeadlock - вряд ли.
легко: Поток 1 занял взя... Jun 21 2012, 22:53 brag Полностью согласен с jcxz, сам прорабатывал возмож... Jun 22 2012, 11:36 brag Цитатанесколькими альтернативными режимами
в моей ... Jun 22 2012, 17:23 Axel Цитата(brag @ Jun 22 2012, 20:23) ...и pl... Jun 23 2012, 06:33 brag практически да. только в моем случаи размер пула о... Jun 23 2012, 07:43 Axel Цитата(brag @ Jun 23 2012, 10:43) ...разм... Jun 24 2012, 04:01  ReAl Цитата(Axel @ Jun 24 2012, 07:01) А как В... Jun 24 2012, 06:47   Axel Цитата(ReAl @ Jun 24 2012, 09:47) Можно и... Jun 24 2012, 07:45 brag Тогда уж красивее так вроде, зачем лишний макро?
И... Jun 24 2012, 09:10 ReAl Ага, щас.
Заменяем (так быстрее, чем union редакти... Jun 24 2012, 12:30
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|