Дом развитие Что такое стек вызовов? - определение из техопедии

Что такое стек вызовов? - определение из техопедии

Оглавление:

Anonim

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

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

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

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

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

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

Это определение было написано в контексте C #
Что такое стек вызовов? - определение из техопедии