русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Динамические структуры данных

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

Итак, что делает оператор VAR? Посмотрим на Рис. 9.1.

Рис. 13.1. Статические переменные.

Программа, написанная на Delphi, компилируется в exe-файл. Внутри него находятся не только коды команд процессора, но и сегмент данных – последовательности байтов, соответствующие всем описанным в программе переменным. Например, если в программе есть оператор VAR x:WORD, то где-то внутри exe-файла будут зарезервированы два байта для хранения значения переменной x. При введении в программу "больших" переменных (например, типа STRING) легко заметить соответствующее увеличение размера exe-файла.

Зачем в exe-файле резервируется место под переменные? Конечно, не для того, чтобы их туда записывать во время работы программы. Exe-файл – вещь неприкосновенная. Windows прямо запрещает внесение изменений в запущенный exe-файл. Дело в том, что перед выполнением программы весь exe-файл считывается и размещается в оперативной памяти. "Пустышки", заготовленные в exe-файле, теперь размещены в оперативной памяти и автоматически превратились в "коробочки" для хранения всех используемых в программе переменных. Так просто и изящно решен вопрос с выделением памяти под статические переменные.

Описанный способ имеет два крупных недостатка: во-первых, растет размер exe-файла. Во-вторых, размер оперативной памяти современных компьютеров составляет 512Мб..1Гб. Если нужно использовать хотя бы 100Мб, пришлось бы писать exe-файл размером свыше 100Мб, что совершенно нереально. В-третьих, и это еще более существенно, во время выполнения программы (время выполнения называется run-time в отличие от времени программирования и отладки, известного как design-time) оказывается невозможным изменить размер статической переменной. Описали массив на 20 чисел – никаким образом превратить его в массив на 25 чисел не удастся. Оно и понятно – размер exe-файла постоянен, его не изменить. Соответственно мы заранее должны знать, сколько ячеек памяти отводить под все используемые в программе данные. Все обычные переменные в программе – статические. Их размер задается программистом и не может быть изменен. Нельзя создать массив из заранее неизвестного числа компонентов.

Подобное ограничение не просто затрудняет работу, но делает попросту невозможным решение очень широкого круга задач. Представьте себе текстовый редактор, способный редактировать ровно 10 страниц текста, а потом у него "память кончается". Спасение заключается в оригинальном механизме образования переменных "на ходу", динамически.

Просмотров: 519


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.