Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
140
Добавлен:
13.03.2016
Размер:
470.02 Кб
Скачать

2.4.2. Время жизни и класс памяти переменных

Кроме понятия области действия имени, рассматривается близкое к нему (но не совпадающее!) понятиевремени жизни (существования)имени. По времени жизни имена делятся настатические(существуют все время выполнения программы),автоматические (существуют во время выполнения функции, в которой описаны),динамические (получают место в памяти с помощью операторов динамического распределения памяти).

Статическим переменным компилятор выделяет ячейки памяти в фиксированных сегментах данных. Автоматические переменные располагаются в стеке. Существуют автоматические переменные, описанные как register; они хранятся во внутренних регистрах процессора; эти переменные их мы рассматривать не будем.

Статические переменные - это глобальные переменные и переменные, описанные как static; последние доступны только функции, в которой описаны, но существуют (занимают память) во время выполнения всей программы

Автоматические переменные - это локальные переменные, не объявленные static,(и переменные типаregister).

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

f(); /*шаблон*/

main()

{...f();f();...;f();/*переменная i будет накапливать число обращений*/

} /* к f*/

f()

{static int i=0;

/*инициализация работает один раз при первом входе в блок */

... i=i+1;

}

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

Ниже приведена простейшая схема оперативной памяти, используемой системой Borland C++[4].

Верхние адреса

стек (локальные переменные)

динамическая память

сегмент данных (статическая память)

Нижние адреса

код программы

Описатели класса памяти

auto- для переменных, действующих в пределах блока; обычно принимается по умолчанию.

register- тоже, что и auto, но для регистров процессора.

static- для описания статических переменных.

extern - делает доступными глобальные переменные, расширяя их область действия.

Характеристики классов памяти приведены в таблице :

Таблица 4

Класс памяти

Время жизни в программе

Область действия

Место в памяти

auto

временно

блок

стек

register

временно

блок

регистры процессор

static16

постоянно

блок

сегмент памяти

extern

постоянно

файл, программа

сегмент памяти

2.4.3 Понятие о файле проекта

В системе Borland C++ информация (имя файла, директорий) об объединяемых в одну программу файлах помещается в файл проекта. Файлы, входящие в проект, компилируются совместно. Затем эти файлы объединяются компоновщиком в один загрузочный модуль (EXE - файл).

Составление файла проекта осуществляется через пункт Project главного меню. Этот пункт содержит подпункты:

  1. Оpen project (открыть проект) - выбор и открытие существующего проекта или создание нового;

  2. Close project (закрыть проект) - закончить работу с проектом;

  3. Add item (добавить элемент) - добавить файл в проект;

  4. Delete item (удалить элемент) - удалить файл из проекта.

При работе с пунктом Projectсреда активизирует окно проекта, где высвечиваются файлы, входящие в данный проект, а при работе с подпунктами Open Project и Add item - eще и окно выбора (как вFile/Open), чтобы легче было найти имя нужного проекта или файла.

Работа с окном выбора при добавлении файлов заканчивается выбором кнопки Done. Окно Projectупрощает переход от одного файла, включенного в проект, к другому при их редактировании. Для этого высвечивание перемещается на имя нужного файла в окне Project и нажимается Enter (или 2 раза левая кнопка мыши). Запускать объединенную программу на компиляцию и выполнение следует из активного окна проекта.