Стек вызовов

Автор: Lewis Jackson
Дата создания: 8 Май 2021
Дата обновления: 25 Июнь 2024
Anonim
Алгоритмы и структуры данных 5. Стек вызовов. Рекурсия.
Видео: Алгоритмы и структуры данных 5. Стек вызовов. Рекурсия.

Содержание

Определение - Что означает Call Stack?

Стек вызовов в C # - это список имен методов, вызываемых во время выполнения от начала программы до выполнения текущего оператора.


Стек вызовов в основном предназначен для отслеживания точки, которой каждая активная подпрограмма должна возвращать управление, когда она завершает выполнение. Стек вызовов действует как инструмент для отладки приложения, когда отслеживаемый метод может быть вызван более чем в одной кон. Это создает лучшую альтернативу, чем добавление кода трассировки ко всем методам, которые вызывают данный метод. Всякий раз, когда в пользовательский код выдается исключение, Common Language Runtime (CLR) разматывает стек вызовов и выполняет поиск блока catch, чтобы определить конкретный тип исключения. Если нет подходящего обработчика, CLR завершит приложение. Поэтому стек вызовов используется для указания указателю выполнения, куда идти дальше.

Введение в Microsoft Azure и Microsoft Cloud | Из этого руководства вы узнаете, что такое облачные вычисления и как Microsoft Azure может помочь вам перенести и запустить свой бизнес из облака.

Техопедия объясняет стек вызовов

Стек вызовов организован как «стек», структура данных в памяти для хранения элементов в порядке «последний пришел-первым вышел», так что вызывающая подпрограмма помещает адрес возврата в стек и вызываемую подпрограмму после завершения, выталкивает адрес возврата из стека вызовов для передачи управления этому адресу.


В C # любое приложение начинается с «основного» метода, который, в свою очередь, вызывает другие методы. При каждом вызове метода метод добавляется в верхнюю часть стека и удаляется из стека по возвращении вызывающей стороне. Кроме того, область действия переменной, объявленной в блоке, определяется с момента, когда ее значение помещается в стек (как часть стека вызовов), до тех пор, пока выполнение не покинет блок, когда переменная и стек вызовов вытолкнут из стека. Таким образом, стек поддерживает как локальные переменные (типы значений), так и стек вызовов (фреймы стека), размер которого указывает на сложность программы.

Это определение было написано в кон C #