TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Гостевая книга

Благодарности

От автора

 

 

 

Работа с динамическими структурами данных Распределение памяти

При объявлении данных динамической структуры в разделе описаний указывается не сама переменная какого-либо типа, а указатель (ссылка) на нее. В результате указатель будет обычной переменной, а переменная на которую он указывает — динамической.

tmp210-8.jpg

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

Выделение и освобождение памяти под динамические переменные выполняется стандартными процедурами New. Dispose, GetMem, FreeMem, Mark, Release во время работы программы. Указательная переменная Р может быть в трех состояниях

1. Содержать адрес какой-либо переменной, память под которую уже выделена

tmp210-7.jpg

tmp210-9.jpg

tmp210-10.jpg

Процедура New(A) выделяет область памяти соответственно тому типу, который описан для указателя А и записывает адрес выделенной памяти в указатель.

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

Несвязанные динамические данные

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

• в разделе var объявляется не переменная требуемого типа, а указатель на этот тип;

• перед использованием необходимо вызвать процедуру New, а после использования — процедуру Dispose.

В качестве примера приведем таблицу сравнения работы с аналогичными статическими и несвязанными динамическими данными.

Структура

данных

Обычные переменные

Динамические

переменные

1 Простая переменная

type Tint= 1..100. var X . Char.

type Tint = 1. 100; var PX : AChar;

 

Y Tint-

PY Tint

1

begin

begin

 

X «•

New (PX)

 

Y =3

New(PY)

'

end

PY« =3

 

 

Dispose (PX)

 

 

Dispose (PY)

 

 

end

2 Массив

type

type

 

Vect- array[1 3] of Byte,

Vect = array[l 3]afByfc;

 

varX Vect

varPX "Vect '

 

i Byte

i Byte

 

begin

begin

 

for i =1 to 3 do

New (PX)

 

Read(X[ii)

for i =1 to 3 do

 

 

Read ( РХАИ )

 

end

 

 

 

Dispose (PX)

 

 

end

3 Запись

type

type

 

Rec - record

Rec = record

 

A Char,

A Char,

 

В Byte

В Byte

 

end

end

 

var

var

 

X Rec

PX «Rec

 

Beg.n

begin

 

XA = "

New(PX)

 

XB =7

PX" A = - ,

 

 

PX" В = 7

 

end

 

 

 

Dispose (PX)

 

 

end

 

 

На первую страницу

 

Rambler's Top100 PROext: Top 1000 Rambler's Top100
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz