что такое локальный объект

Область видимости объектов

Область видимости объекта (переменной или функции) определяет набор функций или модулей, внутри которых допустимо использование имени этого объекта. Область видимости объекта начинается в точке объявления объекта.

Локальные и глобальные переменные

Время жизни объекта может быть глобальным и локальным.

Глобальными называют объекты, объявление которых дано вне функции. Они доступны (видимы) во всем файле, в котором они объявлены. В течение всего времени выполнения программы с глобальным объектом ассоциирована некоторая ячейка памяти.

Локальными называют объекты, объявление которых дано внутри блока или функции. Эти объекты доступны только внутри того блока, в котором они объявлены. Объектам с локальным временем жизни выделяется новая ячейка памяти каждый раз при осуществлении описания внутри блока. Когда выполнение блока завершается, память, выделенная под локальный объект, освобождается, и объект теряет своё значение.

Результат выполнения программы
что такое локальный объект. Смотреть фото что такое локальный объект. Смотреть картинку что такое локальный объект. Картинка про что такое локальный объект. Фото что такое локальный объект
Та же программа, но с использованием глобального объекта

Результат выполнения программы
что такое локальный объект. Смотреть фото что такое локальный объект. Смотреть картинку что такое локальный объект. Картинка про что такое локальный объект. Фото что такое локальный объект
С помощью глобальных переменных можно организовать обмен информацией между функциями. При этом вызываемая функция не будет принимать значения глобальных переменных в качестве формальных аргументов. Однако в этом случае существует опасность случайного изменения глобальных объектов другими функциями.

Модификация объектов

Модификатор unsigned предназначен для того, чтобы объявлять беззнаковую целочисленную переменную, тем самым изменив диапазон представления этой переменной.

Модификатор extern предназначен для использования в данном программном модуле объекта, который объявлен в другом программном модуле.

Переменная k в функции autofunc() зафиксирована в оперативной памяти. Инициализация k проводится только один раз — при первом вызове функции. При повторном обращении к функции autofunc() инициализация переменной k не будет производиться. Значение переменной k и ее адрес сохраняются в оперативной памяти, однако эта переменная не будет доступна из других функций.

Результат выполнения программы
что такое локальный объект. Смотреть фото что такое локальный объект. Смотреть картинку что такое локальный объект. Картинка про что такое локальный объект. Фото что такое локальный объект

Модификатор register предназначен для того, чтобы поместить переменную в один из регистров общего назначения центрального процессора при наличии свободного регистра. Благодаря этому повышается скорость работы с данными. Это необходимо для создания управляющих программ, где требуется высокая скорость обработки данных.

Источник

8.3. Локальные объекты

8.3. Локальные объекты

Объявление переменной в локальной области видимости вводит локальный объект. Существует три вида таких объектов: автоматические, регистровые и статические, различающиеся временем жизни и характеристиками занимаемой памяти. Автоматический объект существует с момента активизации функции, в которой он определен, до выхода из нее. Регистровый объект – это автоматический объект, для которого поддерживается быстрое считывание и запись его значения. Локальный статический объект располагается в области памяти, существующей на протяжении всего времени выполнения программы. В этом разделе мы рассмотрим свойства всех этих объектов.

8.3.1. Автоматические объекты

Автоматический объект размещается в памяти во время вызова функции, в которой он определен. Память для него отводится из программного стека в записи активации функции. Говорят, что такие объекты имеют автоматическую продолжительность хранения, или автоматическую протяженность. Неинициализированный автоматический объект содержит случайное, или неопределенное, значение, оставшееся от предыдущего использования области памяти. После завершения функции ее запись активации выталкивается из программного стека, т.е. память, ассоциированная с локальным объектом, освобождается. Время жизни такого объекта заканчивается с завершением работы функции, и его значение теряется.

Поскольку память, отведенная локальному объекту, освобождается при завершении работы функции, адрес автоматического объекта следует использовать с осторожностью. Например, этот адрес не может быть возвращаемым значением, так как после выполнения функции будет относиться к несуществующему объекту:

Matrix* trouble( Matrix *pm )

// результат присвоим res

Matrix *mainResult = trouble( m1 );

mainResult получает значение адреса автоматического объекта res. К несчастью, память, отведенная под res, освобождается по завершении функции trouble(). После возврата в main() mainResult указывает на область памяти, не отведенную никакому объекту. (В данном примере эта область все еще может содержать правильное значение, поскольку мы не вызывали других функций после trouble() и запись ее активации, вероятно, еще не затерта.) Подобные ошибки обнаружить весьма трудно. Дальнейшее использование mainResult в программе скорее всего даст неверные результаты.

Передача в функцию trouble() адреса m1 автоматического объекта функции main() безопасна. Память, отведенная main(), во время вызова trouble()находится в стеке, так что m1 остается доступной внутри trouble().

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

Читайте также

Локальные стили

Локальные стили То, что у каждого элемента-разделителя есть свое собственное содержание, делает эти элементы прекрасно подходящими для решений на Ajax. И снова HTML5 показывает свое происхождение из спецификации для веб-приложений.Однако если вы попытаетесь перенести

4.10 Локальные сети

4.10 Локальные сети Рассмотрим, как IP и другие протоколы пакетируют кадры для пересылки по локальным сетям. Классическая локальная сеть предполагает следующие свойства:? Станции совместно используют физический носитель.? Существуют правила управления доступом к

19.6.12 Ссылки на локальные документы

19.6.12 Ссылки на локальные документы Можно создать ссылку на документ локального хоста. Например, ссылка на локальный документ DOS выглядит как: Документ локального хоста Для извлечения такого документа нет надобности в протоколе HTTP. Отметим,

Локальные политики

Локальные политики Раздел Локальные политики содержит три политики: Политика аудита, Назначение прав пользователя и Параметры безопасности.? Политика аудита — позволяет определить события, факты происхождения которых будут записываться в журнал Безопасность

Объекты DataSet с множеством таблиц и объекты DataRelation

Объекты DataSet с множеством таблиц и объекты DataRelation До этого момента во всех примерах данной главы объекты DataSet содержали по одному объекту DataTable. Однако вся мощь несвязного уровня ADO.NET проявляется тогда, когда DataSet содержит множество объектов DataTable. В этом случае вы можете

Локальные контексты

Локальные контексты В совете 35 приведена реализация сравнения строк без учета регистра символов с применением алгоритмов mismatch и lexicographical_compare, но в нем также указано, что полноценное решение должно учитывать локальный контекст. Книга посвящена STL, а не вопросам

Локальные контексты в С++

Локальные контексты в С++ В стандартной библиотеке С++ локальный контекст не является глобальной структурой данных, запрятанной где-то в недрах реализации библиотеки. Это объект типа std::locale, который можно создать и передать его другой функции, как любой другой объект.

ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ

ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ Мы уже несколько раз касались вопроса о том, что переменные в функции являются ее внутренними переменными и «не известны» вызывающей функции. Аналогично переменные вызывающей функции не известны вызываемой функции. Вот почему для связи с ней, т.

5.5.4. Локальные сокеты

5.5.4. Локальные сокеты Сокеты, соединяющие процессы в пределах одного компьютера, работают в локальном пространстве имен (PF_LOCAL или PF_UNIX, это синонимы). Такие сокеты называются локальными или UNIX-сокетами. Их адресами являются имена файлов, указываемые только при создании

8.3.3. Статические локальные объекты

8.3.3. Статические локальные объекты Внутри функции или составной инструкции можно объявить объект с локальной областью видимости, который, однако, будет существовать в течение всего времени выполнения программы. Если значение локального объекта должно сохраняться

13.12. Локальные классы A

13.12. Локальные классы A Класс, определенный внутри тела функции, называется локальным. Он виден только в той локальной области, где определен. Не существует синтаксиса, позволяющего обратиться к члену такого класса, в отличие от вложенного, извне локальной области

22.2. Локальные переменные

22.2. Локальные переменные Что такое «локальная» переменная?локальные переменныеПеременные, объявленные как локальные, имеют ограниченную область видимости, и доступны только в пределах блока, в котором они были объявлены. Для функций это означает, что локальная

14.2. Локальные переменные

14.2. Локальные переменные Переменные интерпретатора shell могут использоваться сценариями в период функционирования интерпретатора shell. После завершения выполнения интерпретатора действие этих переменных прекращается. Например, локальная переменная имя_файла может

10.4. Локальные сети

10.4. Локальные сети Локальная сеть создается, как правило, для совместного использования ресурсов ЭВМ или данных (обычно в одной организации). С технической точки зрения локальная сеть – совокупность компьютеров и каналов связи, объединяющих компьютеры в структуру с

Источник

8.3.3. Статические локальные объекты

8.3.3. Статические локальные объекты

Внутри функции или составной инструкции можно объявить объект с локальной областью видимости, который, однако, будет существовать в течение всего времени выполнения программы. Если значение локального объекта должно сохраняться между вызовами функции, то обычный автоматический объект не подойдет: ведь его значение теряется каждый раз после выхода.

В таком случае локальный объект необходимо объявить как static (со статической продолжительностью хранения). Хотя значение такого объекта сохраняется между вызовами функции, в которой он определен, видимость его имени ограничена локальной областью. Статический локальный объект инициализируется во время первого выполнения инструкции, где он объявлен. Вот, например, версия функции gcd(),устанавливающая глубину рекурсии с его помощью:

int traceGcd( int vl, int v2 )

static int depth = 1;

cout «глубина #» depth++ endl;

return traceGcd( v2, vl%v2 );

Значение, ассоциированное со статическим локальным объектом depth, сохраняется между вызовами traceGcd(). Его инициализация выполняется только один раз – когда к этой функции обращаются впервые. В следующей программе используется traceGcd():

extern int traceGcd(int, int);

int rslt = traceCcd( 15, 123 );

cout «НОД (15,123): » rslt endl;

Результат работы программы:

Неинициализированные статические локальные объекты получают значение 0. А автоматические объекты в подобной ситуации получают случайные значения. Следующая программа иллюстрирует разницу инициализации по умолчанию для автоматических и статических объектов и опасность, подстерегающую программиста в случае ее отсутствия для автоматических объектов.

const int iterations = 2;

int value1, value2; // не инициализированы

static int depth; // неявно инициализирован нулем

if ( depth iterations )

cout » valuel: » value1;

cout » value2: » value2;

cout » sum: » value1 + value2;

for ( int ix = 0; ix iterations; ++ix ) func();

Вот результат работы программы:

valuel: 0 value2: 74924 sum: 74924

valuel: 0 value2: 68748 sum: 68748

valuel: 0 value2: 68756 sum: 68756

valuel: 148620 value2: 2350 sum: 150970

valuel: 0 value2: 68756 sum: 68756

value1 и value2 – неинициализированные автоматические объекты. Их начальные значения, как можно видеть из приведенной распечатки, оказываются случайными, и потому результаты сложения непредсказуемы. Объект depth, несмотря на отсутствие явной инициализации, гарантированно получает значение 0, и функция func() рекурсивно вызывает сама себя только дважды.

Читайте также

8.1. Статические библиотеки

8.1. Статические библиотеки Статические библиотеки представляют собой простые коллекции объектных файлов, объединенных утилитой ar (архиватор), ar группирует объектные файлы в один архив и добавляет таблицу, в которой указано, какие объектные файлы в архиве какие символы

Статические фильтры

Статические фильтры AlphaЗадает уровень прозрачности элемента страницы.При настройке этого фильтра можно использовать следующие параметры:AlphaImageLoadedОтображает графическое изображение внутри элемента страницы между его фоном и содержимым.При настройке этого фильтра

Статические параметры

Статические параметры Информация о текущей версии Windows находится в двух статических параметрах реестра и одном динамическом. Для начала поговорим о статических параметрах — они находятся в ветви реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlProductOptions. Это параметры ProductType и ProductSuite.?

R.9.4 Статические члены

R.9.4 Статические члены Для члена класса, представляющего данные или функцию, можно при описании класса задать спецификацию static. Для статического члена, представляющего данные, в программе существует только один экземпляр, которым владеют все объекты этого класса.

Статические методы

Статические методы Рассмотрим следующий класс Teenager (подросток), который определяет статический метод Complain(), возвращающий случайную строку, полученную с помощью вызова частной вспомогательной функции GetRandomNumber().class Teenager < private static Random r = new Random(); private static int GetRandomNumber(short

Статические конструкторы

Статические конструкторы Вы уже знаете о том, что конструкторы используются для установки значения данных типа во время его создания, Если указать присваивание значения элементу статических данных в рамках конструктора уровня экземпляра, вы обнаружите, что это

Статические классы

Статические классы Язык C# 2005 расширил область применения ключевого слова static путем введения в рассмотрение статических классов. Когда класс определен, как статический, он не допускает создания экземпляров с помощью ключевого слова new и может содержать только

Статические свойства

Статические свойства В C# также поддерживаются статические свойства. Вспомните из главы 3, что статические члены доступны на уровне класса, а не экземпляра (объекта) этого класса. Например, предположим, что тип Employee определяет элемент статических данных, представляющий

Объекты DataSet с множеством таблиц и объекты DataRelation

Объекты DataSet с множеством таблиц и объекты DataRelation До этого момента во всех примерах данной главы объекты DataSet содержали по одному объекту DataTable. Однако вся мощь несвязного уровня ADO.NET проявляется тогда, когда DataSet содержит множество объектов DataTable. В этом случае вы можете

Статические переменные

Статические переменные Название раздела не следует понимать буквально, т. е. считать, что такие переменные не могут изменяться. В действительности слово «статические» здесь означает, что переменные остаются в работе. Они имеют такую же область действия, как

8.3. Локальные объекты

8.3. Локальные объекты Объявление переменной в локальной области видимости вводит локальный объект. Существует три вида таких объектов: автоматические, регистровые и статические, различающиеся временем жизни и характеристиками занимаемой памяти. Автоматический

Статические методы

Статические методы Вы можете объявить некоторые методы класса статическими методами. Для этого вы должны воспользоваться ключевым словом static. Статические методы не принимают параметр this. На использование статических методов накладывается ряд ограничений.•

5.4.4 Статические Члены

5.4.4 Статические Члены Класс – это тип, а не объект данных, и в каждом объекте класса имеется своя собственная копия данных, членов этого класса. Однако некоторые типы наиболее элегантно реализуются, если все объекты этого типа могут совместно использовать (разделять)

5.4.4 Статические Члены

5.4.4 Статические Члены Класс – это тип, а не объект данных, и в каждом объекте класса имеется своя собственная копия данных, членов этого класса. Однако некоторые типы наиболее элегантно реализуются, если все объекты этого типа могут совместно использовать (разделять)

8.5.1 Статические Члены

8.5.1 Статические Члены Член данные класса может быть static; члены функции не могут. Члены не могут быть auto, register или extern. Есть единственная копия статического члена, совместно используемая всеми членами класса в программе. На статический член mem класса cl можно ссылаться cl:mem,

Источник

локальный объект

Смотреть что такое «локальный объект» в других словарях:

локальный объект — Языковый объект, объявленный в программном блоке и недоступный вне его. [ГОСТ 28397 89] Тематики языки программирования EN local … Справочник технического переводчика

Локальный объект — 19. Локальный объект Local Языковый объект, объявленный в программном блоке и недоступный вне его Источник: ГОСТ 28397 89: Языки программирования. Термины и определения оригинал документа … Словарь-справочник терминов нормативно-технической документации

локальный — 3.12 локальный: Применяется по отношению к любому прибору, установленному на или вблизи оборудования или пульта управления. Источник: ГОСТ Р 53737 2009: Нефтяная и газовая промышленность. Поршневые компрессоры. Общие технические требования … Словарь-справочник терминов нормативно-технической документации

Локальный способ формирования следов — способ формирования следов, при к ром следообразующий объект вносит изменения в следовоспринимающий объект на участке непосредственного их соприкосновения. Изменения в случаях наиболее распространенного механического воздействия отражают… … Криминалистическая энциклопедия

Архитектурно-строительный объект — (АСО) локальный объект архитектурно строительной деятельности по микропространственной организации экологически комфортной среды в здании или сооружении и их непосредственном городском или природном окружении на конкретном земельном участке в… … Официальная терминология

Классический объект пояса Койпера — Сравнение орбит крупнейших кьюбивано (синие) и крупнейших плутино (красные) (c H Википедия

ГОСТ 28397-89: Языки программирования. Термины и определения — Терминология ГОСТ 28397 89: Языки программирования. Термины и определения оригинал документа: 38. Автоматическое распределение памяти Automatic storage allocation Выделение памяти при входе в программный блок для локальных переменных и ее… … Словарь-справочник терминов нормативно-технической документации

Одиночка (шаблон проектирования) — У этого термина существуют и другие значения, см. Одиночка. Шаблон проектирования Одиночка Singleton Тип: порождающий Описан в Design Patterns Да Одиночка (англ. Singleton) в программировании&#160 … Википедия

Обработка исключений — Для улучшения этой статьи желательно?: Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное. Проставив сноски, внести более точные указания на источники … Википедия

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *