Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Продолжительность существования
Продолжительность существования - это период, в течение которого идентификаторам в программе соответствуют конкретные объекты в памяти. Определены три вида продолжительности: статическая, локальная и динамическая. Объектам со статической продолжительностью существования память выделяется в начале выполнения программы и сохраняется до конца программы. Статическую продолжительность имеют все функции и файлы. Все глобальные переменные (т.е. объявленные вне всех функций) обладают статической продолжительностью существования. Локальные переменные (объявленные в функциях), со спецификатором statiс также имеютстатическую продолжительность. Статическая переменная, локализованная в функции, не теряет своего значения при отработке функции. Инициализируется статическая переменная только при первом вызове функции, при втором вызове и последующих вызовах – значением этой переменной будет то, что сохранилось в памяти при предыдущем вызове. Глобальные и статические переменные по умолчанию инициализируются нулями. Если в функции имеется описание переменной со спецификатором extern, это означает, что эта переменная глобальная и ее определение дано в другом месте вне функции. Такая переменная имеет статическую продолжительность существования. Локальной продолжительностью существования обладают автоматические (локальные) переменные, объявленные в блоке. Такие переменные создаются при каждом входе в блок, где они определены и уничтожаются при выходе. Локальные переменные должны инициализироваться только явно, иначе их начальные значения не предсказуемы. Область действия локального объекта – блок. Спецификатор класса auto всегда избыточен, так как этот класс по умолчанию приписывается всем объектам, определенным в блоке. Объекты с динамической продолжительностьсуществования создаются и уничтожаются с помощью операторов в процессе выполнения программы по желанию программиста. Память таким переменным выделяется в области динамически распределяемой памяти, называемой кучей. Для создания объекта используются операция new или функции malloc() и сalloc(), а для уничтожения - операция delete или функция free (). Операция: new имя_типа или new имя_типа инициализатор выделяет и делает доступным участок памяти для объекта данного типа и в выделенный участок заносит значение инициализатора, что не обязательно. Операция возвращает адрес первого байта выделенного участка, или нулевое значение в случае неудачи. Если надо определить динамическую переменную типа int, следует объявить указатель на int и ему присвоить результат операции new, например: int*r = new (15); В дальнейшем доступ к выделенному участку памяти обеспечивается выражением *r. Продолжительность существования выделенного участка – от точки создания до конца программы или до явного освобождения памяти операцией delete r; Date: 2015-07-17; view: 473; Нарушение авторских прав |