Динамическая память (memory heap) — это область ОЗУ, существующая специально для динамических объектов. Часть этой памяти может быть виртуализирована на диске. Программы получают блоки динамической памяти с помощью специальных функций.
После размещения в динамической памяти объект используется точно так же, как и глобальный или автоматический объекты, за исключением того, что динамические объекты адресуются указателями.
Когда работа с динамическим объектом закончена, программа вызывает функцию, которая освобождает выделенную память для распределения ее в будущем другим объектам. В этом случае динамическая память рассматривается как большой буферный пул, в котором перемещаются объекты различных типов. Поскольку динамическая память — разделяемый ресурс, для его правильного использования требуется некоторая осторожность в программировании.
Отдавайте себе отчет в том, что ваша программа и все прочие приложения разделяют одну и ту же динамическую память. Это означает, что ваши объекты хранятся вперемешку с объектами таких приложений, как Excel или Word for Windows — концепция, неожиданная для многих программистов в среде DOS, привыкших рассматривать всю имеющуюся память как доступную для своих программ. (Windows поддерживает неразделяемую локальную динамическую память, но этот ресурс ограничен по размеру и подходит только для небольших объектов.)
Для Windows-программ доступны два вида динамической памяти: локальная и глобальная. Не путайте их с локальными и глобальными объектами. Вопреки схожести названий эти понятия различны, как огонь и вода.
Глобальный объект — структура или иной элемент, определенный вне какой-либо функции.
Локальный объект — один из тех, что может быть использован только определившей его функцией. (Например, автоматическая переменная, определенная внутри функции, локальна по отношению к ней.)
Локальная динамическая память организуется внутри 64К-байто-вого сегмента данных программы, не располагающего достаточным пространством для сотен огромных объектов, типичных для программ Windows. Глобальная динамическая память состоит из памяти, которая не используется программами или самой системой Windows. Так как глобальная динамическая память способна хранить объекты размером до 16 Мбайтов в расширенном режиме (до одного Мбайта в стандартном режиме), она должна быть предпочтительнее для размещения больших структур данных, связанных со многими файлами Windows.
Объект, хранящийся в динамической памяти, является постоянным, т.е. продолжает занимать выделенное пространство, даже если породившая его функция завершилась. Как общее правило, важно, чтобы функция удаляла созданные ею динамические объекты либо некоторым способом сохраняла дескриптор или указатель объекта для последующего освобождения выделенной области. В противном случае возникает так называемая утечка памяти. Разумеется память не «вытекает» из компьютера, но эффект такой, как будто она начинает просачиваться через дверь, в роли которой выступает ваш жесткий диск. Большинство программистов видели, как Windows замедляется, диск часто дергается и пиктограммы теряют свой цвет.
По мере все большего вытекания памяти мышь и клавиатура перестают реагировать, и вам ничего не остается, как перезагрузить компьютер. Утечка памяти — серьезная ошибка, которая должна предотвращаться всеми средствами.
Прайс-лист.
specialshop.ru
на нашем сайте у вас есть возможность ознакомиться с магазин psp
sc-store.ru
Описание продукции. Техники для разных отраслей промышленности.
izh-reduktor.ru