До сих пор рассматривались параметры программы, под которые выделялся определенный объем памяти и между отдельными элементами программы устанавливались связи еще на этапе компиляции и компоновки. Например, для работы с массивом чисел необходимо было заранее задавать максимальный размер этого массива, и тем самым резервировать под этот массив некоторый объем памяти. На практике не всегда заранее известно количество элементов массива. Поэтому для того, чтобы программа обладала достаточной степенью универсальности, необходимо резервировать много памяти, что приводит к неэффективному ее использованию. Кроме того, может возникнуть ситуация, когда оперативной памяти просто не будет хватать для обработки больших объемов данных (когда в Паскаль-программе описываются глобальные переменные, компилятор выделяет для них память, максимальный размер которой составляет 64К).
В языке Паскаль есть возможность по ходу выполнения программы выделять и освобождать необходимую память для размещения различных данных. Таким образом можно организовывать динамические (т.е. изменяющие размеры) структуры данных. При этом оперативная память будет использоваться наиболее эффективным образом. Область оперативной памяти, где можно выделять отдельные участки для размещения данных и освобождать их будем называть динамической памятью или кучей.
Пример
Предположим, что есть программа, которой может потребоваться массив це-лых чисел, причем длина массива заранее неизвестна. Поэтому будем считать, что максимальная длина данного массива может оказаться равной 32767 (32 К). Каждый элемент массива занимает 2 байта, поэтому такой массив займет всю память, т.е. 64К. В этом случае не остается места даже для других переменных.
Но что если нужно два таких массива? Это потребовало бы 128К. Чтобы работать с большими объемами данных, нужно использовать динамически распределяемую область памяти.
Опубликовал Kest
June 03 2010 14:29:34 ·
0 Комментариев ·
8188 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.