· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Фрагментация памяти.

Посл.отвђт Сообщенiе


Дата: Авг 6, 2003 21:01:30

У меня следующий вопрос:
память выделяемая API Win GlobalAlloc/HeapAlloc всегда выделяют память напрерывно?
Не может ли случиться так, что сначала идёт половина выделенной памяти, потом что то непонятное, а потом вторая половина выделенного куска?
Если можно различия в работе этих функций в 98 и 2к.


Дата: Авг 6, 2003 21:30:55

Возник ещё один вопрос чем отличаются кучи созданная CreateHeap и созданная при запуске процесса GetProcessHeap.


Дата: Авг 6, 2003 21:55:06

Согласно MSDN страницы зарезервированные в фиксированном хипе (с помощью CreateHeap, например) подвержены фрагментации, но HeapAlloc и подобные функции возвращают только непрерывные (написано contiguous) куски памяти. Иными словами, у вас может быть мегабайтный хип свободной памяти разбитый на несколько фрагментов но при попытке получить у него 500Кб возникнет ошибка, а при попытке получить два куска по 250Кб каждый, оба вызова пройдут успешно. В общем, поищите тему по Heap Object в MSDN.


Дата: Авг 6, 2003 22:01:09

Непрерывно линейно или физически?


Дата: Авг 6, 2003 22:05:49

The Svin
Непрерывно линейно или физически?
Линейно, конечно. Физически ведь память всегда фрагментируется хотя бы на микросхемном уровне (после контроллера).


Дата: Авг 6, 2003 22:35:40

pas, сам подумай - ты попросил у системы кусок памяти, она тебе его дала, а там по середине дырка! Нонсенс.

Куча процесса и кучи созданные с помощью CreateHeap принципиально, а скорее всего вообще, ничем не отличаются.

К тому, что сказал Quantum, могу добавить, что ОЧЕНЬ подробно внутреннее устройство кучи описано в доке к айсу "Using SoftICE", Глава 11 "Exploring Windows NT", раздел "Heap API". Правда, там еще для NT3.51, вроде, но принципиально, IMHO, ничего не изменилось.

Что касается различий между 98 и 2к, то на уровне API, IMHO, никаких.


Дата: Авг 7, 2003 01:18:06

Спасибо вроде стало понятно.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.077