|
|
| Посл.отвђт | Сообщен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 |