Borland Pascal. Руководство пользователя
6cac1dc9

Управление памятью


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

Таким образом, приложение Windows должно соответствовать ди- намическому распределению памяти Windows и избегать прямого обра- щения к адресам памяти. Например, традиционный указатель на ячей- ку памяти может быстро стать недопустимым, когда Windows пере- распределит память, так как может указывать на ячейку памяти, ко- торая используется для чего-то еще.

Вместо указателей Windows использует описатели, которые по существу представляют собой указатели на указатели. Описатели - это номера, использующиеся в качестве индексов в обслуживаемой Windows таблице указателей. Таким образом, приложения Windows ссылаются на окно или содержимое экрана (область для отображения на экране) по описателю. Имеются также указатели экземпляров при- ложений, строк, средств отображения и ресурсов, таких как меню и пиктограммы.

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

Одним из основных преимуществ управления памятью в Windows является возможность совместно использовать в приложениях скомпи- лированный код. Например, если пользователь выполняет два экземп- ляра одного и того же приложения, то эти приложения используют один и тот же скомпилированный код в памяти. Аналогично, приложе- ние может динамически загружать библиотечный модуль, совместно используемый в нескольких прикладных программах. Это называется динамически компонуемой библиотекой - DLL.



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