Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 55

L

После присваивания значения указателю ptr его можно использоваться наравне с именем массива. Вы можете удивленно спросить: «Но зачем это нужно?». Действительно, в данном примере использование указателя не дает никаких преимуществ. Реальные достоинства указателей проявляются при создании динамических объектов. В этом случае указатель необходим для доступа к объекту. Я вернусь к этой теме позже, когда буду рассказывать о двух способах создания переменных и объектов.

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

До сих пор во всех программах-примерах использовалось локальное раз­мещение объектов — это значит, что память для переменных или объектов выделялась в программном стеке.

Локальное распределение (local allocation) означает, что память для переменной или объекта выделяется в программном стеке.

Стек (stack) — это область оперативной памяти, резервируемая программой при запуске.

Вся память, необходимая программе для создания локальных перемен­ных, вызовов функций и прочих действий, берется из стека. Эта память распределяется по мере необходимости и освобождается, когда потребность в ней исчезает. Обычно это происходит при входе в функцию или локальный блок. Память для локальных переменных, используемых функцией, распре­деляется при вызове этой функции. Когда функция завершает работу, вы­деленная ей память освобождается. Все эти действия происходят автомати­чески; вы не должны задумываться над тем, как и когда выделяется или освобождается память.

Локальное распределение имеет свои плюсы и минусы. С одной стороны, память может быть выделена в стеке очень быстро. С другой стороны, стек имеет фиксированный размер, который не может быть изменен во время работы программы. Если стек переполняется, начинают происходить стран­ные явления. Программа может зависнуть, начать работать нестабильно, или при нормальной на первый взгляд работе компьютер зависает после оконча­ния программы. В 32-разрядной среде переполнение стека доставляет меньше неприятностей по сравнению с 16-разрядной, но все же эту возможность необходимо принимать во внимание.

Web-дизайн (с) 2010 All rights reserved