информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медЗа кого нас держат?Где водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 С наступающим 
 Серьезная уязвимость в Apache Log4j 
 Крупный взлом GoDaddy 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Memory Manager - контроль кучи, алгоритм. Что скажете? 15.06.01 16:57  Число просмотров: 939
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
привет всем.

задача такая. надо написать свой Memory Manager, который контролирует кучу, через которого объекты получают память с помощью оператора new и удаляются, точнее возвращается обратно куче, с помощью delete.

иначе говоря - сначала резервируем вольшой кусок памяти - куча, скажем на 8Kb - HEAP. теперь, вызываем new и пытаемся получить пространство размером в 256 байт -Block. в операторе new, перенаправляеться на MemManager.

MemManager ищет внутри 8Kb (HEAP) свободное место, помечает его как используемое, помечает используемый размер (256), если нужно делает пометки, для внутреннего использования и возвращает указатель на начало блока (Block). т.е. каждый HEAP содержит внутри n-ое кол-во Block.

при освобождении, т.е. вызов - delete Block, смотрит из какой кучи (HEAP) он выдавал Block, помечает Blockкак свободный, или происходит слияние этого блока с предидущим/последуюущим если они тоже помечены как свободный. естественно увеличивая размер свободного пространства + 256.

теперь вопрос. естественно как то надо вести учет свободного простраиства, и держать информацию о всех блоках. есть вариант всю инфу собирать и контролировать через связанные списки, не трудный вариант, но он плох тем что на поиск блока внутри кучи тратиться время и не малое.

у кого будут другие предложения, может кто занимался подобным?

и еще. будь он связанный список или еще какой объект, он должен быть внутренний. и вызов операвтора new не разрешен, т.к. пойдет рекурсия - MemManager сам конролирует new / delete.

не знаю на сколько понятно все изложил, думаю те кто писали подобное поняли о чем речь. а если кто не понял, спрашивайте, не стесняйтесь :-)))
<programming> Поиск 








Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach