Динамически распределяемая память (куча) занимает всю свободную память. Вторая часть – стэк – и локальные переменные Третья – сегмент данных – глобальные переменные и типизированные константы (статические переменные), код модуля System, код основной программы, префикс программного сегмента (служебная информация).
Размеры стэка и сегмента данных могут быть изменены при работе программы. В 16 разрядных системах максимальный размер сегмента 64 Кб. Нарушение приводит к 2 ошибками:
Современные 32- 64разрядные системы позволяют использовать память более рационально, снимая жёсткие ограничения.
Так как реальное количество данных не всегда можно предсказать в начале работы программы, многие языки позволяют создавать/уничтожать переменные в ходе работы программы.
Динамические переменные имеют следующие свойства:
В указателях хранятся адреса других переменных, используемых в программе
Адрес переменной – адрес первого байта, выделяемого под переменную.
Для структурных типов данных (массивов, записей), их адресом считаются адрес первого байта первого элемента. В Pascal существует возможность прямого доступа к любому байту оперативной памяти по его адресу. Для этого используются определённые в модуле System массивы: Mem, MemW, MemL, позволяющие записать/читать информацию непосредственно из ячеек памяти.
Создание и удаление динамических переменных
Существует 2 процедуры создания динамических переменных
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.