мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версия | Следующая версияСледующая версия справа и слева | ||
pascal:pointers [20/10/2009 12:06] – ybezrukov | pascal:pointers [21/11/2009 18:10] – oca | ||
---|---|---|---|
Строка 2: | Строка 2: | ||
FIXME | FIXME | ||
+ | |||
+ | ===== Процедуры и функции для работы с динамической памятью ===== | ||
+ | |||
+ | Ниже приводится описание как уже рассмотренных процедур и функций, | ||
+ | |||
+ | Функция ADDR. | ||
+ | |||
+ | Возвращает результат типа POINTER, в котором содержится адрес аргумента. Обращение: | ||
+ | |||
+ | ADDR ( X ) | ||
+ | |||
+ | Здесь Х- любой объект программы (имя любой переменной, | ||
+ | |||
+ | Функция CSEG. | ||
+ | |||
+ | Возвращает значение, | ||
+ | |||
+ | CSEG | ||
+ | |||
+ | Результат возвращается в слове типа WORD. | ||
+ | |||
+ | Процедура DISPOSE. | ||
+ | |||
+ | Возвращает в кучу фрагмент динамической памяти, | ||
+ | |||
+ | DISPOSE(TP) | ||
+ | |||
+ | Здесь ТР – типизированный указатель. При повторном использовании процедуры применительно к уже освобожденному фрагменту возникает ошибка периода исполнения. При освобождении динамических объектов можно указывать вторым параметром обращения к DISPOSE имя деструктора (подробнее см. гл.10). | ||
+ | |||
+ | Функция DSEG. | ||
+ | |||
+ | Возвращает значение, | ||
+ | |||
+ | DSEG | ||
+ | |||
+ | Результат возвращается в слове типа WORD. | ||
+ | |||
+ | Процедура FREEMEM. | ||
+ | |||
+ | Возвращает в кучу фрагмент динамической памяти, | ||
+ | |||
+ | FREEMEM ( Р, SIZE ) | ||
+ | |||
+ | Здесь Р – нетипизированный указатель; | ||
+ | |||
+ | SIZE – длина в байтах освобождаемого фрагмента. | ||
+ | |||
+ | При повторном использовании процедуры применительно к уже освобожденному фрагменту возникает ошибка периода исполнения. | ||
+ | |||
+ | Процедура GETMEM. | ||
+ | |||
+ | Резервирует за нетипизированным указателем фрагмент динамической памяти требуемого размера. Обращение: | ||
+ | |||
+ | GETMEM ( Р, SIZE ) | ||
+ | |||
+ | За одно обращение к процедуре можно зарезервировать не более 65521 байтов динамической памяти. Если нет свободной памяти требуемого размера, | ||
+ | |||
+ | Процедура MARK. | ||
+ | |||
+ | Запоминает текущее значение указателя кучи HEAPPTR. Обращение: | ||
+ | |||
+ | MARK ( PTR ) | ||
+ | |||
+ | Здесь PTR – указатель любого типа, в котором будет возвращено текущее значение HEAPPTR. Используется совместно с процедурой RELEASE для освобождения части кучи. | ||
+ | |||
+ | Функция MAXAVAIL. | ||
+ | |||
+ | Возвращает размер в байтах наибольшего непрерывного участка кучи. Обращение: | ||
+ | |||
+ | MAXAVAIL |