Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование - 11 - Указатели.doc
Скачиваний:
8
Добавлен:
09.03.2016
Размер:
207.36 Кб
Скачать

11.4 Операции с указателями

@

= , <>

унарная операция определения адреса, например:

PI1 := @i ; ( PI1 — указатель, описанный выше, i — целочисленная переменная );

операции сравнения ( «равно», если указатели ссылаются на один и тот же объект )

11.5 Процедуры и функции для работы с указателями и адресами

Ниже через TPобозначена переменная–типизованный указатель, черезP— нетипизованный, если в качестве параметра приведеноTPP, то можно использовать указатель любого типа.

Procedure ...

New ( var TP ) ;

создает новую динамическую переменную определенного типа (выделяет для нее память в куче) и устанавливает на нее указатель TP

Dispose ( var TP ) ;

уничтожает динамическую переменную определенного типа (возвращает в кучу фрагмент памяти), на которую указывал указатель TP

GetMem ( var P, Size : Word ) ;

создает новую динамическую переменную указанного размера в Size и устанавливает на нее указатель P (для размещения переменной в куче в точном соответствии с размерностью типа часто используется значение функции SizeOf )

FreeMem ( var P, Size : Word ) ;

уничтожает динамическую переменную указанного размера в Size , на которую указывал указатель P

Mark ( var TPP ) ;

запоминает в TPP текущее значение указателя кучи HeapPtr (используется совместно с процедурой Release для освобождения части кучи)

Release ( var TPP ) ;

возвращает кучу к тому состоянию, которое было сохранено соответствующим вызовом Mark, т.е. освобождает всю часть кучи, начиная с адреса, сохраненного в TPP при последующих (после Mark) выделениях памяти

Function ...

Addr ( var X ) : Pointer ;

адрес аргумента X, где X — любой объект программы (переменная, процедура, функция), аналог действия операции @

Seg ( X ) : Word ;

сегмент адреса X, где X — любой объект программы (переменная, процедура, функция)

Ofs ( X ) : Word ;

смещение адреса X, где X — любой объект программы (переменная, процедура, функция)

Ptr ( Seg, Ofs : Word ) : Pointer ;

преобразует в значение типа Pointer адрес, заданный сегментом Seg и смещением Ofs

MaxAvail : LongInt ;

размер наибольшего непрерывного свободного участка кучи

MemAvail : LongInt ;

размер в байтах общего свободного пространства кучи

SizeOf ( X ) : Word ;

размер аргумента в байтах, где X — переменная любого типа или любой тип