8f04092b

Работа с большими объемами данных


По мере того как программы становятся более сложными, и тре- буются работа с большим количеством данных, область объемом в 64К, зарезервированная в Borland Pascal для данных, может ока- заться недостаточной, чтобы содержать все необходимые программе данные. Указатели позволяют вам обойти эту проблему.

Когда вы описываете в Borland Pascal глобальные переменные, компилятор выделяет для них память в области, которая называется сегментом данных. Сегмент данных имеет максимальный размер 64К. Это означает, что общий объем всех ваших глобальных переменных не может превышать 64К. Для многих программ этот предел значения не имеет, но в некоторых случаях вам может потребоваться больший объем.

Примечание: Локальные переменные не помещаются в сег- мент данных и в пределе 64К не учитываются.

Предположим, например, что у вас есть программа, требующая массива в 400 строк по 100 символов каждая. Для этого массива требуется примерно 40К, что меньше максимума в 64К. Если осталь- ные ваши переменные помещаются в оставшиеся 24К, массив такого объема проблемы не представляет.

Но что если вам нужно два таких массива? Это потребовало бы 80К, и 64К сегмента данных не хватит. Чтобы работать с большими объемами данных, вам нужно использовать динамически распределяе- мую область памяти. Ваша программа может выделить в динамически распределяемой области 80К, поддерживая указатель в виде ссылку на адрес данных. Указатель занимает в сегменте данных только 4 килобайта.

Что такое динамически распределяемая область памяти?

Динамически распределяемая область памяти - это вся память, которую ваша операционная система делает доступной для программы и которая не используется ее кодом, сегментом данных и стеком. Объемом распределяемой динамической памяти вы можете управлять с помощью директивы компилятора $M.

Обычно в Borland Pascal вы можете зарезервировать память в динамически распределяемой области, получить к ней доступ через указатель, а затем снова освободить память. Подробности о распре- делении памяти в динамически распределяемой области вы можете найти ниже в разделе "Как использовать указатели?".



Содержание раздела