Язык:
Русский
English
Переменные Heap (модуль System)
HeapBlock, HeapError, HeapLimit, и HeapList, HeapAllocFlags, HeapEnd,
HeapOrg, HeapPtr
Диспетчер кучи использует переменные HeapList, HeapLimit, HeapBlock и HeapError при работе подпрограмм динамического распределения памяти.
Переменная HeapLimit определяет порог между "меньшим (small)" и "большим (large)" блоками кучи. Переменная HeapBlock определяет размер, который диспетчер кучи использует при распределении блоков, назначенных к подпрограмме распределения.
Вам нет причин изменять значения переменных HeapLimit и HeapBlock, но если вы все-таки хотите это сделать, удостоверьтесь, что HeapBlock по крайней мере в 4 раза превышает размер HeapLimit.
Переменная HeapError содержит адрес функции ошибки кучи, которая вызывается всякий раз, когда диспетчер кучи не может выполнить запрос распределения.
HeapError - это указатель, который указывает на функцию с таким заголовком:
Function HeapFunc (Size : Word) : Integer;
Far;
Функция ошибки кучи устанавливается назначением ее адреса переменной HeapError следующим образом:
HeapError := @HeapFunc;
Функция ошибки кучи вызывается всякий раз, когда при обращении к New или GetMem запрос распределения памяти не может быть завершен.
Параметр Size содержит размер блока, который не может быть распределен, и функция ошибки кучи пытается освободить блок по крайней мере этого размера.
Перед вызовом функции ошибки кучи, диспетчер кучи пытается распределить блок внутри его свободного пространства подраспределения также как через прямое обращение к функции Windows GlobalAlloc.
Функция HeapError возвращает
■ 0 для указания ошибки, и вызывает ошибку времени выполнения.
■ 1 для указания ошибки, и засталяет New или GetMem возвратить NIL.
■ 2 для указания успеха, и вызывает повторение (которое может также
вызвать другое обращение к функции ошибки кучи).
HeapAllocFlags используется с gmem_Moveable.
HeapEnd, HeapOrg и HeapPtr - указатели на конец, начало и текущий указатель кучи, соответственно.
Переменные кучи для Windows
HeapList
HeapLimit
HeapBlock
HeapAllocFlags
HeapError
Переменные кучи для реального режима DOS
HeapEnd
HeapOrg
HeapPtr
HeapError
Переменные кучи для защищенного режима DOS
HeapList
HeapLimit
HeapBlock
HeapAllocFlags