Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

HEAPEND содержит адрес конца кучи



Рис. 13.4. Указатели кучи

HEAPERROR обрабатывает ошибки, связанные с выделением памяти в куче.

FREELIST содержит адрес первого свободного блока. Фактически указывает на структуру, предназначенную для описания всех свободных блоков памяти ниже границы.

HEAPPTR содержит адрес нижней границы свободной части кучи.

Они равны, пока память не фрагментирована.

Фрагментация памяти в куче (появление свободных блоков) связана со случайным порядком использования new - dispose и getmem - freemem. Запись, на которую ссылается FREELIST, состоит из двух полей: размер свободного участка и адрес следующего свободного участка (т. е. 4 + 4 = 8 байт). Как только освобождается участок в памяти, в первые 8 байт этого участка помещается запись, на которую указывает FREELIST. Таким образом, все свободные участки в занятой части кучи объединяются в список: в каждом свободном участке содержится указание на следующий участок. Следовательно, администратор кучи всегда может просмотреть весь список свободных блоков.

Mark (p:pointer) – запоминает текущее значение указателя кучи HEAPPTR в переменной p.

Release (p:pointer) – освобождает участок кучи, начиная от адреса, хранящегося в p (запомненного процедурой Mark) до конца кучи (до HEAPPTR). При этом список FREELIST уничтожается.

П р и м е р ы





Дата публикования: 2014-10-25; Прочитано: 315 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...