ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ


1.     РАЗМЕЩЕНИЕ ДАННЫХ В ПАМЯТИ

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

Статическая память — данные размещаются в ней после компиляции и хранятся до конца. В стеке — временно.

Динамическая память «куча» используется в зависимости от выбранной  модели памяти. Различают «ближнюю кучу» — неиспользованную часть  сегмента стека и «дальнюю кучу» — оставшаяся свободная  память  машины. В начале блока выделяемой памяти записывается его размер. Он затем используется при удалении.

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

CS – сегмент кода программы,

DS – сегмент статических данных программы,

SS – сегмент стека для временных переменных,

ES —  дополнительный сегмент статических данных.

Для оптимизации управления памятью имеется 7 моделей памяти. Размещением  данных в памяти управляет программист. Адрес любого участка памяти состоит из смещения и сегмента. Полный (физический) адрес для чтения и записи данных в память получается: адрес сегмента * 16 + смещение.

2.      МОДЕЛИ ПАМЯТИ

C++ поддерживает 7 моделей памяти: tiny, small, medium, compact, large, huge, flat. Для каждой модели различается количество сегментов отведенных под код программы и данных. Рассмотрим эти модели.