
- •1 Программное обеспечение сутп
- •2 Структура интегрированной системы автоматизированного управления.
- •4 Основные принципы тестирования и верификации программ
- •5 Физическая и логическая структуры данных
- •6 Общая концепция и типы структур распределенных баз данных
- •7 Проектирование по.
- •8 Эталонная модель взаимодействия открыты систем .
- •9 Основы концептуального проектирования бд
- •10 Нисходящая и восходящая технологии программирования.
- •11 Функции администратора по су тп.
- •12 Жизненный цикл по
- •13 Статические и динамические структуры данных, их особенности
13 Статические и динамические структуры данных, их особенности
Существуют динамические и статические объекты. У обычные переменные сразу после её описания резервируется область памяти, и эта область закрепляется за переменной на все время работы программы. Такого рода переменные называют статическими переменными. Часто бывает так, что какая-то переменная нужна не на всё время выполнение программы, а только на какую-то часть этого времени. Такие временные программные объекты могут занимать значительный объем памяти и одновременное существование всех таких объектов может потребовать столь большого объема машинной памяти, что соответствующая программа просто не сможет разместиться в ограниченной оперативной памяти машины. Переменные которые могут резервировать область памяти, а затем снова освобождать во время выполнения программы стали называть динамическими. Динамические объекты будут возникать в процессе выполнения программы, а действия над ними необходимо задавать уже до выполнения.
В Паскале для работы с динамическими объектами предусматривается специальный тип переменных, так называемый ссылочный тип. Каждому динамическому объекту в программе сопоставляется статическая переменная ссылочного типа. В терминах этих ссылочных переменных обосновываются действия над соответствующими динамическими объектами.
Динамические объекты и ссылки:
<имя ссылочного типа> = Л <имя типа>,
Где л - называемая «крышка», признак ссылочного типа,
<имя типа> - это имя либо статического, либо ранее описанного типа значения.
Рассмотрим листинг программы написанный на языке Паскаль:
Значение переменной p может быть ссылкой на динамический объект целого типа. Значение переменной q - ссылка на динамический объект литерного типа. Значение переменной RabMas - ссылка на динамический объект значение, которого является массив из 10 целых чисел. Значения статических ссылочных переменных указывают место в памяти соответствующего динамического объекта, поэтому переменные ссылочного типа часто называют указателями.
Динамическому объекту в отличие от статических не дается имен в обычном понимание этого слова. Для ссылки на динамический объект в Паскале имеется такое понятие как переменная с указателем: <имя переменной с указателем> = <ссылочная переменная> л , где <ссылочная переменная> - это имя той статической переменой ссылочного типа, которая в программе поставлена в соответствие данному динамическому типу.
«Крышка» после ссылочной переменной свидетельствует о том, что здесь речь идет не о значении ссылочной переменной, а о значении того программного объекта на которой указывает эта ссылочная переменная.
Отличия использования динамических переменных от статических переменных:
вместо описания самих динамических переменных в программе даются описания указателей(статических переменных ссылочного типа) поставленных в соответствие динамическим переменным;
в подходящем месте программы должно быть представлено порождение каждой из динамической
переменной (в Паскале процедура New);
для ссылки на динамическую переменную используется переменная с указателем.
Если в процессе выполнения программы некоторая динамический объект созданный ранее становиться не нужным, то его можно уничтожить, что позволит освободить оперативную память, которую он занимал.