Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

Глава 14. Управление памятью и b-деревья

Управление памятью

Чтобы осуществить любую структуру данных на фактическом компьютере, мы должны использовать машинную память. Машинная память - просто последовательность слов памяти, каждое из которых обычно состоит из 4, 8, или 16 байтов (в зависимости от компьютера).

Эти слова памяти пронумерованы от 0 до N- 1, где N - число

слова памяти, доступные компьютеру. Число связалось с каждой мадам -

слово ory известно как его адрес. Таким образом память в компьютере может быть рассмотрена как в основном одно гигантское множество слов памяти. Используя эту память, чтобы построить структуры данных (и программы пробега) требует, чтобы мы управляли памятью компьютера, чтобы обеспечить пространство, необходимое для данных - включая переменные, узлы, указатели, множества и строки символов - и программ компьютерные пробеги. Мы обсуждаем основы управления памятью в этой секции.

C ++ стек во время выполнения

C ++ программа собрана в двойной исполняемый файл, который тогда выполнен в пределах контекста C ++ окружающая среда во время выполнения. Окружающая среда во время выполнения обеспечивает важные функции для выполнения Вашей программы, такие как руководящая мадам - ory и выполнение входа и выхода.

У стеков есть важное применение к среде во время выполнения C ++ про - граммы. У бегущей программы есть частный стек, названный стеком вызова функции, или просто назовите стек, если коротко, который используется, чтобы отслеживать местные переменные и другую важную информацию о функциях, поскольку они призваны во время выполнения. (См. Фигу - ure 14.1.)

Более определенно, во время выполнения программы, окружающая среда во время выполнения поддерживает стек, элементы которого - описатели в настоящее время активного (то есть, незаконченный) просьбы функций. Эти описатели называют структурами. Структура для некоторой просьбы функции «дурак» хранит текущую стоимость местных переменных и параметры дурака функции, а также информацию о функции, «прохладной», который назвал дурака и о том, какие потребности быть возвращенным к функции «охлаждают».

Отслеживание прилавка программы

Система Вашего компьютера во время выполнения поддерживает специальную переменную, названную прилавком программы, который отслеживает, которых машинная инструкция в настоящее время - exe-cuted. Когда прохладная функция () призывает другого дурака функции (), текущая стоимость прилавка программы зарегистрирована в структуре текущей просьбы прохладных () (таким образом, система знает, куда возвратиться к тому, когда дурак функции () сделан). Наверху стека структура бегущей функции, то есть, функция, которая в настоящее время является

14.1. Управление памятью 667

главный () {

интервал i=5;

14 прохладный (i);

дурак:

PC = 320 m=7

}

прохладный: прохладный (интервал j) {

PC = 216 j=5 k=7

главный:

PC = 14 i=5

216

}

интервал k=7;

дурак (k);

320 дурак (интервал m) {

C ++ стек

}

C ++ программа

Рисунок 14.1: пример C ++ называет стек: дурака функции просто назвала прохладная функция, который сама ранее назвала главная функция. Отметьте ценности прилавка программы, параметров и местных переменных, сохраненных в структурах стека. Когда просьба дурака функции заканчивается, просьба функции прохладные резюме ее выполнение в инструкции 217, который получен, увеличив ценность прилавка программы, сохраненного в структуре стека.

выполнение. Остающиеся элементы стека - структуры приостановленного func-tions, то есть, функции, которые призвали другую функцию и в настоящее время ждут ее, чтобы возвратить контроль им после его завершения. Заказ элементов в стеке соответствует цепи просьб в настоящее время активных функций. Когда новая функция призвана, структура для этой функции выдвинута на стек. Когда это заканчивается, его структура суется от стека, и система возобновляет обработку ранее приостановленной функции.

Понимание прохождения параметра вызова по значению

Система использует стек требования, чтобы выполнить параметр, проходящий к функциям. Если справочные параметры не включены, C ++ использует параметр вызова по значению мимолетный протокол. Это означает, что текущая стоимость переменной (или выражение) - то, что передано как аргумент вызванной функции.

668