русс | укр

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

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

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

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


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

Оперативная и динамическая память


Дата добавления: 2015-09-15; просмотров: 602; Нарушение авторских прав


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

Рассматриваемые до сих пор программы использовали фрагменты памяти, резервированием которых для программы занимался компилятор. Когда в программе объявляются глобальные переменные, то компилятор при компиляции программы определяет требуемое количество байт для хранения значений переменных по их типу. Такие переменные называются статическими:

Программист может обращаться к участкам памяти по именам переменных, значения которых хранятся в них.

Оперативная память ПК представляет собой совокупность ячеек для хранения информации – байтов, каждый из которых имеет собственный номер. Эти номера называются адресами, которые позволяют обращаться к любому байту памяти.

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

Максимальный адресуемый участок памяти составляет 1Мбайт (220 байт). На современных компьютерах адресное пространство составляет 4 Гбайт (232 байт).

Однако средства Турбо Паскаля позволяют адресовать пространство в 1Мбайт. Для этого используется 20-разрядный адрес, который получается из двух 16-разрядных адресов сегмента и смещения:

Сегмент        
+                                        
Смещение        
=                                        
Адрес

Все переменные, объявленные в программе, размещаются в одной непрерывной области оперативной памяти, которая называется сегментом данных.



Например, рассмотрим следующую программу:

Var

a : real;{6 байт}

c : char;{1 байт}

d : array [1..10] of integer;{10*2=20 байт}

i : integer;{2 байта}

Begin

a := 4.6;

c := ’z’;

for i:=10 downto 1 do

d[i] := i*10;

End.

Рассмотрим сегмент данных программы:

Смещение
000A 000B 000C 000D 000E 000F
а c d[1] d[2] d[3] d[4] d[5]
4.6 ‘z’
001A 001B 001C 001D 001E 001F
d[5] d[6] d[7] d[8] d[9] d[10] i      
       

Использование статических переменных не всегда удобно при решении многих практических задач.

Например, когда речь идет об обработке заранее неизвестного количества однотипных данных. В этом случае выделение памяти для массива, состоящего из большого количества элементов, может быть неэффективным решением. Поскольку память будет зарезервирована для массива, а фактически в программе она не будет использована.

Другая ситуация: размер выделенного массива может быть недостаточно для обработки данных.

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

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

Многие практические задачи трудно или невозможно решить без использования динамической памяти.

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



<== предыдущая лекция | следующая лекция ==>
Добавление границ, заливки и теней к графическим объектам. | Указатели


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


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

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

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


 


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

 
 

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

Генерация страницы за: 0.004 сек.