русс | укр

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

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

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

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


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

Организация памяти области кучи


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


Для размещения динамических переменных используется область памяти, называемая «кучей». Место для данных в куче {197} отводится и освобождается только во время работы программы, и именно поэтому мы говорим о динамических данных. Место для прочих переменных отводится в специальном сегменте данных еще на этапе компиляции и не меняется впоследствии — это статические данные. Интересно, что сами ссылочные переменные являются статическими и располагаются в сегменте данных, но данные на которые они впоследствии ссылаются, как правило, организуются в куче.

На рис. 11.3 представлено распределение памяти области кучи при работе программ, написанных на Турбо Паскале. Куча первоначально всегда свободна и заполняется от нижних адресов в области кучи. Эта область характеризуется двумя предопределенными в языке указателями (переменными типа Pointer): HeapOrg и HeapPtr. Переменная HeapOrg указывает на начало кучи. Как видно из рис. 11.3, куча начинается сразу за оверлейным буфером. Если же программа не имеет оверлейных блоков, то куча начинается сразу за областью стека. Значение HeapOrg постоянно и, как правило, не меняется по ходу выполнения программы.

Переменная HeapPtr указывает на нижнюю границу свободного пространства в куче. Каждый раз, когда в куче размещается наверху новая динамическая переменная, этот указатель перемещается на размер переменной. При этом он нормализуется (приводится к виду СЕГМЕНТ:СМЕЩЕНИЕ) таким образом, что смещение находится в диапазоне от 0 до $F (15). Максимальный размер переменной, которая может быть размещена в куче равен 65520 байт, так как каждая переменная должна находится в одном сегменте и «оставлять» в нем 15 байтов.

Верхняя граница памяти MS-DOS

Список свободных блоков (заполняется “вниз”)
Свободная память кучи
Используемая часть кучи (растет ‘вверх’)
Оверлейный буфер (если необходим)
│ ∙│
│ ∙│
└───────────────────────┘
Стек, сегмент данных, Рабочий код EXE-файла
FreePtr →
HeapPtr→
HeapOrg→
─────┬─
─────┴─
│ │
Куча
← Начало EXE-файла

 



 

Рис. 11.3 {198}

Переменные HeapOrg и HeapPtr не стоит использовать в программах, пока не требуется распределять память кучи лучше, чем системные процедуры Турбо Паскаля. Но для опытных программистов, собирающихся производить «уборку мусора» и оптимизацию кучи, они могут быть полезны.



<== предыдущая лекция | следующая лекция ==>
Операция разыменования | Управление размерами области кучи и стека


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


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

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

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


 


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

 
 

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

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