мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версия | Последняя версияСледующая версия справа и слева | ||
pascal:pointers [21/11/2009 18:12] – oca | pascal:pointers [21/11/2009 18:12] – oca | ||
---|---|---|---|
Строка 74: | Строка 74: | ||
MAXAVAIL | MAXAVAIL | ||
+ | |||
+ | Результат имеет тип LONGINT. За один вызов процедуры NEW или GETMEM нельзя зарезервировать памяти больше, | ||
+ | |||
+ | Функция MEMAVAIL. | ||
+ | |||
+ | Возвращает размер в байтах общего свободного пространства кучи. Обращение: | ||
+ | |||
+ | MEMAVAIL | ||
+ | |||
+ | Результат имеет тип LONGINT. | ||
+ | |||
+ | Процедура NEW. | ||
+ | |||
+ | Резервирует фрагмент кучи для размещения переменной. Обращение: | ||
+ | |||
+ | NEW ( ТР ) | ||
+ | |||
+ | Здесь ТР – типизированный указатель. | ||
+ | |||
+ | За одно обращение к процедуре можно зарезервировать не более 65521 байта динамической памяти. Если нет свободной памяти требуемого размера, | ||
+ | |||
+ | Процедура NEW может вызываться как функция. В этом случае параметром обращения к ней является тип переменной, | ||
+ | |||
+ | type | ||
+ | |||
+ | PInt =^Integer; | ||
+ | |||
+ | var | ||
+ | |||
+ | p: Pint; | ||
+ | |||
+ | begin | ||
+ | |||
+ | p := New(PInt); | ||
+ | |||
+ | …… | ||
+ | |||
+ | end. | ||
+ | |||
+ | При размещении в динамической памяти объекта разрешается в качестве второго параметра обращения к NEW указывать имя конструктора (см. гл.10). | ||
+ | |||
+ | Функция OFS. | ||
+ | |||
+ | Возвращает значение типа WORD, содержащее смещение адреса указанного объекта. Вызов: | ||
+ | |||
+ | OFS ( X ) | ||
+ | |||
+ | Здесь Х- выражение любого типа или имя процедуры. | ||
+ | |||
+ | Функция PTR. | ||
+ | |||
+ | Возвращает значение типа POINTER по заданному сегменту SEG и смещению OFS. Вызов: | ||
+ | |||
+ | PTR ( SEG, OFS ) | ||
+ | |||
+ | Здесь SEG – выражение типа WORD, содержащее сегмент; | ||
+ | |||
+ | OFS – выражение типа WORD, содержащее смещение. | ||
+ | |||
+ | Значение, | ||
+ | |||
+ | Процедура RELEASE. | ||
+ | |||
+ | Освобождает участок кучи. Обращение: | ||
+ | |||
+ | RELEASE ( PTR ) | ||
+ | |||
+ | Здесь PTR – указатель любого типа, в котором предварительно было сохранено процедурой MARK значение указателя кучи. Освобождается участок кучи от адреса, | ||
+ | |||
+ | Функция SEG. | ||
+ | |||
+ | Возвращает значение типа WORD, содержащее сегмент адреса указанного объекта. Вызов: | ||
+ | |||
+ | SEG ( X ) | ||
+ | |||
+ | Здесь X – выражение любого типа или имя процедуры. | ||
+ | |||
+ | Функция SIZEOF. | ||
+ | |||
+ | Возвращает длину в байтах внутреннего представления указанного объекта. Вызов: | ||
+ | |||
+ | SIZEOF ( X ) | ||
+ | |||
+ | Здесь X – имя переменной, |