Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Динамические структуры.doc
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
435 Кб
Скачать
☆

Освобождение памяти

Процедура dispose(указатель). Освобождает заранее выделенный участок памяти, адрес первого байта которого является значением указателя. При этом указатель переходит в неопределенное состояние.

Пример 3.

var

a,b:^integer;{объявление указателей}

begin

{ выделение памяти под указатели a,b }

new(a); new(b);

{ помещаем значения в выделенную память по адресу, содержащемуся в указателях }

a^ :=10;

b^ :=2;

{ вывод суммы присвоенных значений }

writeln('сумма = ',a^ + b^);

{освобождение памяти от динамических данных}

dispose(a);

dispose(b);

end.

При этом перед освобождением памяти состояние такое:

a

адрес 1

b

адрес 2

a^

10

b^

2

После операции dispose(a) состояние :

a

?

b

адрес 2

2

После операции dispose(b) состояние :

a

?

b

?

Особенности динамических данных

Как было сказано выше, особые свойства данных, на которые ссылаются указатели, проявляются в том, что эти данные могут «появляться» и «исчезать» во время работы программы. Поэтому такие данные и называются динамическими.

Особенности динамических данных:

  1. Для доступа к динамическим данным в программе нужно объявить пользовательский указатель на тип, соответствующий типу этих данных. (объявление указателя см.выше)

  2. Перед использованием динамических данных необходимо выделить память их для размещения. Для этого используются специальная процедура NEW, результатом которой является адрес выделенного участка памяти, помещенный в объявленный ранее указатель.

  3. После использования динамических данных их нужно удалить из памяти - освободить память. Для этого используются специальная процедура Dispose/

Связанные динамические структуры

В рассмотренных выше примерах создавались несвязанные динамические данные. Но наибольшее применение при написании программ находят связанные динамические данные. Они позволяют создавать структуры данных различной конфигурации. Это достигается тем, что в любой момент времени работы программы:

1) можно выделять и освобождать память под элементы динамической структуры;

2) можно установить или удалить связь между двумя любыми элементами структуры.