Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1
Кент Рейсдорф. BORLAND C++BUILDER. Страница 55
После присваивания значения указателю ptr его можно использоваться наравне с именем массива. Вы можете удивленно спросить: «Но зачем это нужно?». Действительно, в данном примере использование указателя не дает никаких преимуществ. Реальные достоинства указателей проявляются при создании динамических объектов. В этом случае указатель необходим для доступа к объекту. Я вернусь к этой теме позже, когда буду рассказывать о двух способах создания переменных и объектов.
Локальное и динамическое распределение памяти
До сих пор во всех программах-примерах использовалось локальное размещение объектов — это значит, что память для переменных или объектов выделялась в программном стеке.
Локальное распределение (local allocation) означает, что память для переменной или объекта выделяется в программном стеке.
Стек (stack) — это область оперативной памяти, резервируемая программой при запуске.
Вся память, необходимая программе для создания локальных переменных, вызовов функций и прочих действий, берется из стека. Эта память распределяется по мере необходимости и освобождается, когда потребность в ней исчезает. Обычно это происходит при входе в функцию или локальный блок. Память для локальных переменных, используемых функцией, распределяется при вызове этой функции. Когда функция завершает работу, выделенная ей память освобождается. Все эти действия происходят автоматически; вы не должны задумываться над тем, как и когда выделяется или освобождается память.
Локальное распределение имеет свои плюсы и минусы. С одной стороны, память может быть выделена в стеке очень быстро. С другой стороны, стек имеет фиксированный размер, который не может быть изменен во время работы программы. Если стек переполняется, начинают происходить странные явления. Программа может зависнуть, начать работать нестабильно, или при нормальной на первый взгляд работе компьютер зависает после окончания программы. В 32-разрядной среде переполнение стека доставляет меньше неприятностей по сравнению с 16-разрядной, но все же эту возможность необходимо принимать во внимание.