Иллюстрированный самоучитель по Turbo Pascal

Процедуры и функции для работы с динамической памятью

Ниже приводится описание как уже рассмотренных процедур и функций, так и некоторых других, которые могут оказаться полезными при обращении к динамической памяти.

Функция ADDR

Возвращает результат типа POINTER, в котором содержится адрес аргумента. Обращение:

ADDR (X)

Здесь Х – любой объект программы (имя любой переменной, процедуры, функции). Возвращаемый адрес совместим с указателем любого типа.

Отметим, что аналогичный результат возвращает операция @.

Функция CSEG

Возвращает значение, хранящееся в регистре CS микропроцессора в начале работы программы в регистре CS содержится сегмент начала кода программы). Обращение:

CSEG

Результат возвращается в слове типа WORD.

Процедура DISPOSE

Возвращает в кучу фрагмент динамической памяти, который ранее был зарезервирован за типизированным указателем. Обращение:

DISPOSE(TP)

Здесь ТР – типизированный указатель. При повторном использовании процедуры применительно к уже освобожденному фрагменту возникает ошибка периода исполнения. При освобождении динамических объектов можно указывать вторым параметром обращения к DISPOSE имя деструктора (подробнее см. гл.10).

Функция DSEG

Возвращает значение, хранящееся в регистре DS микропроцессора (в начале работы программы в регистре DS содержится сегмент начала данных программы). Обращение:

DSEG

Результат возвращается в слове типа WORD.

Процедура FREEMEM

Возвращает в кучу фрагмент динамической памяти, который ранее был зарезервирован за нетипизированным указателем. Обращение:

FREEMEM (Р, SIZE)

Здесь:

  • Р – нетипизированный указатель;
  • SIZE – длина в байтах освобождаемого фрагмента.

При повторном использовании процедуры применительно к уже освобожденному фрагменту возникает ошибка периода исполнения.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.