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