![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с памятью.
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]Удалено модератором
Примечание: Флуд