Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 Программное обеспечение СУТП готов.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
531.46 Кб
Скачать

13 Статические и динамические структуры данных, их особенности

Существуют динамические и статические объекты. У обычные переменные сразу после её описания резервируется область памяти, и эта область закрепляется за переменной на все время работы программы. Такого рода переменные называют статическими переменными. Часто бывает так, что какая-то переменная нужна не на всё время выполнение программы, а только на какую-то часть этого времени. Такие временные программные объекты могут занимать значительный объем памяти и одновременное существование всех таких объектов может потребовать столь большого объема машинной памяти, что соответствующая программа просто не сможет разместиться в ограниченной оперативной памяти машины. Переменные которые могут резервировать область памяти, а затем снова освобождать во время выполнения программы стали называть динамическими. Динамические объекты будут возникать в процессе выполнения программы, а действия над ними необходимо задавать уже до выполнения.

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

Динамические объекты и ссылки:

<имя ссылочного типа> = Л <имя типа>,

Где л - называемая «крышка», признак ссылочного типа,

<имя типа> - это имя либо статического, либо ранее описанного типа значения.

Рассмотрим листинг программы написанный на языке Паскаль:

Значение переменной p может быть ссылкой на динамический объект целого типа. Значение переменной q - ссылка на динамический объект литерного типа. Значение переменной RabMas - ссылка на динамический объект значение, которого является массив из 10 целых чисел. Значения статических ссылочных переменных указывают место в памяти соответствующего динамического объекта, поэтому переменные ссылочного типа часто называют указателями.

Динамическому объекту в отличие от статических не дается имен в обычном понимание этого слова. Для ссылки на динамический объект в Паскале имеется такое понятие как переменная с указателем: <имя переменной с указателем> = <ссылочная переменная> л , где <ссылочная переменная> - это имя той статической переменой ссылочного типа, которая в программе поставлена в соответствие данному динамическому типу.

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

Отличия использования динамических переменных от статических переменных:

  • вместо описания самих динамических переменных в программе даются описания указателей(статических переменных ссылочного типа) поставленных в соответствие динамическим переменным;

  • в подходящем месте программы должно быть представлено порождение каждой из динамической

переменной (в Паскале процедура New);

  • для ссылки на динамическую переменную используется переменная с указателем.

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