Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с памятью.


Страницы:   1 2

Riply ©   (2007-09-06 03:19:00) 

Здравствуйте !
Допустим, нам требуется часто и много раз выделять блоки памяти и освобождать их.
Пусть все блоки будут одинакового размера.
Какие могут быть варианты реализации ?
Можно написать самой простенький класс.
Например, выделить большой кусок и выдавать его сегменты по требованию,
помечая их как занятые. При освобождении сегмента помечать его как свободный.
Но, как показывает мой опыт, все давно уже написано до нас.
И есть уверенность, что существует более красивое(оптимальное, рациональное) решение.
По советам старших, пыталась посмотреть с чем едят LookasideList'ы, но мой
пыл быстро охладило отсутствие на моем компьютере таких библиотек как Wdm, Ntddk, or Ntifs.
С какой стороны можно подступиться к решению этой задачи ?


Riply   (2007-09-06 09:07:00) [21]

> [12] Сергей М. ©   (06.09.07 09:06)
> Я так понял что встроенный в RTL BorlandMM тебя по каким-то причинам не устраивает ?
Очень стыдно, но спрошу: кто это и с чем его едят ?


Сергей М.   (2007-09-06 09:06:00) [22]


> Riply ©   (06.09.07 03:19)


Я так понял что встроенный в RTL BorlandMM тебя по каким-то причинам не устраивает ?


MBo   (2007-09-06 05:19:00) [23]

простая реализация менеджера блоков есть у Бакнелла (книга Фунд. Алгоритмы)
исходники
http://www.boyet.com/FixedArticles/DADSBook.html

стоит только проверить - вдруг Fastmem-овский менеджер памяти не хуже справляется


Riply   (2007-09-06 05:16:00) [24]

> [9] Turbouser ©   (06.09.07 04:40)
> Ок. Ограничимся одним вопросом - для чего это?
Допустим ты копируешь файл по кусочкам.
while Condition do
begin
 ReadFile(Buffer,..
 WriteFile(Buffer,..
end

Тебе же не придет в голову на каждом шаге цикла использовать GetMem/FreeMem для Buffer ?
Нет, ты заранее выделишь Buffer нужного размера и будешь его использовать.
Ну а теперь вообразим, что нам нужен для работы не один буфер (сколько - неизвестно)
и их количество меняется в ходе работы. Некоторые "освобождаются", другие прибавляются.
Может при освобождении лучше не уничтожать их,
а пометить как пригодные для повторного использования ?


Turbouser   (2007-09-06 04:40:00) [25]

Удалено модератором
Примечание: Флуд


Riply   (2007-09-06 04:37:00) [26]

> [5] Turbouser ©   (06.09.07 03:41)
> Для чего это? Зачем такие извращения?
А что тебя смущает и где ты увидел извращения ?

P.S.
Сейчас как придут модераторы и как зарежут ветку за злостный флуд :)
Что тогда делать будем ?


Turbouser   (2007-09-06 04:31:00) [27]

Удалено модератором
Примечание: Флуд


Германн   (2007-09-06 03:46:00) [28]

Удалено модератором
Примечание: Флуд


Turbouser   (2007-09-06 03:41:00) [29]

> [0] Riply ©   (06.09.07 03:19)

Для чего это? Зачем такие извращения?


Германн   (2007-09-06 03:39:00) [30]

Удалено модератором
Примечание: Флуд


Riply   (2007-09-06 03:30:00) [31]

Удалено модератором
Примечание: Флуд


Riply   (2007-09-06 03:28:00) [32]

Удалено модератором
Примечание: Флуд


Германн   (2007-09-06 03:24:00) [33]

Удалено модератором
Примечание: Флуд


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо