Страница 1 из 1
Добавлено: 29 апр 2004, 18:12
Absurd
Такого алгоритма не существует, поскольку после его применения станут невалидными все указатели.
Можно юзать вместо указателей какие-нибудь хендлы блоков памяти.
Чтобы получить указатель, надо будет зафиксировать блок (имея его хендл), а после его модификации - освободить, чтобы менеджер кучи имел возможность его перемещать и упаковывать.
Но для этого надо написать свой менеджер кучи.
Добавлено: 29 апр 2004, 20:23
Romeo
И вообще программиста такие вещи не должны заботить. Дефрагментацию памяти проводит Windows.
Добавлено: 30 апр 2004, 09:26
Hup
В принципе с памятью можно побаловаться, но у меня такое получалось только при помощи ассемблера. Причет прога была под Дос, т.е. писалась на Си с Асм. функциями(вставками)... Тогда я классно поизвращался со всё этой фигнёй...
Добавлено: 30 апр 2004, 11:08
Romeo
Одно дело играться с памятью, другое дело дефрагментировать память. Если ты её просто так дефрагметируешь, то ысе ссылки станут невалидными.
Перемещение элемента
Добавлено: 30 апр 2004, 12:39
crack
значит нужно при перемещении элемента изменять соответствующие ссылки, т.е сначала удалять элемент а затем размещать на него память в другом месте, но возникает проблема где сохранять содержимое блока если вся память заполнена? Может использовать файл-буфер или стек сделать(?)? Как переместить блок без предварительного удаления старого указателя я не знаю. Подскажите может кто нибудь с таким сталкивался!!!
Добавлено: 01 май 2004, 09:48
Hup
Romeo писал(а):Одно дело играться с памятью, другое дело дефрагментировать память. Если ты её просто так дефрагметируешь, то ысе ссылки станут невалидными.
Блин, ясен пень, что при таком подходе нчего хорошего не светит

Добавлено: 02 май 2004, 13:05
Hawk
Сожно следать свою мапу, где по внутренним хендлам хранить реальные указатели на память. Прога будет работать только с хендлами а раельные указатели уже твой менеджер будет крутить как хочет. Но всеравно программа должна знать, что она работает с хендлами а не с прямыми указателями. Без этого ни как.