Руководство по языку B.Pascal 7


Администратор динамически распределяемой области памяти


Windows поддерживает динамическое распределение памяти в двух различных динамически распределяемых областях: глобальной динамически распределяемой области и локальной динамически расп- ределяемой области.

Примечание: Более подробно о локальной и глобальной динамически распределяемой области рассказывается в "Руко- водстве программиста по Windows".

Глобальная динамически распределяемая область - это пул па- мяти, доступный для всех прикладных программ. Хотя могут выде- ляться блоки глобальной памяти любого размера, глобальная динами- чески распределяемая область памяти предназначена только для "больших" областей памяти (256 байт или более). Каждый блок гло- бальной памяти имеет избыточный размер 20 байт, и при работе в стандартной среде Windows в улучшенном режиме 386 существует ог- раничение в 8192 блока памяти, только некоторые из которых дос- тупны для отдельной прикладной программы.

Локальная динамически распределяемая область памяти - это пул памяти, доступной только для вашей прикладной программы или библиотеки. Она расположена в верхней части сегмента данных прик- ладной программы или библиотеки. Общий размер блоков локальной памяти, которые могут выделяться в локальной динамически распре- деляемой области, равен 64К, минус размер стека прикладной прог- раммы и статических данных. По этой причине локальная динамически распределяемая область памяти лучше подходит для "небольших" бло- ков памяти (26 байт или менее). По умолчанию размер локальной ди- намически распределяемой области равен 8К, но с помощью директивы компилятора $M это значение можно изменить.

Примечание: Borland Pascal не поддерживает механизм распределения памяти с помощью процедур Mark и Release, ко- торые предусмотрены в версии для DOS.

Borland Pascal включает в себя подсистему управления динами- чески распределяемой памятью (администратор памяти), которая реа- лизует стандартные процедуры New, Dispose, GetMem и FreeMem. Для всех выделений памяти подсистема динамически управления распреде- ляемой областью памяти использует глобальную динамически распре- деляемую область. Поскольку глобальная динамически распределяемая область памяти имеет системное ограничение в 8192 блока (что оп- ределенно меньше, чем может потребоваться в некоторых прикладных задачах), подсистема управления динамически распределяемой об- ластью памяти Borland Pascal для улучшения производительности и обеспечения выделения существенно большего числа блоков включает в себя алгоритм вторичного распределения сегмента.




- Начало -  - Назад -  - Вперед -