Страница 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 писал(а):Одно дело играться с памятью, другое дело дефрагментировать память. Если ты её просто так дефрагметируешь, то ысе ссылки станут невалидными.
Блин, ясен пень, что при таком подходе нчего хорошего не светит :D

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