Что такое кадр выполнения?

В C#, что такое кадр выполнения (также связанный с этим я услышал о кадре активации). IIRC это - слот, куда параметры метода идут, но не могут помнить все детали.

Спасибо

5
задан razlebe 6 March 2010 в 00:10
поделиться

2 ответа

Я полагаю, вы имеете в виду фрейм стека - и в этом случае ответ не относится к C # или вообще к какому-либо конкретному языку, а скорее к платформа, на которой выполняется ваша программа. Из статьи Википедии о стеке вызовов :

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

См. Также этот ответ на предыдущий вопрос для прекрасного описания стека, включая кадры стека.

3
ответ дан 14 December 2019 в 04:35
поделиться

"Каркас исполнения" - это термин, который используется в интерпретируемых языках, в частности в Python. Это совсем другая модель исполнения, чем в C#. Ближайшим эквивалентом является блок области видимости в методе C#, кусок кода, заключенный в фигурные скобки. Хотя рамка выполнения в Python могла распространяться и на тело функции, сейчас она эквивалентна рамке стека в C#. Что является другим термином для фрейма активации.

Компилятор C# распознает объявления, локальные для блока scope в C#. Время выполнения не распознает, оно распознает только стековый фрейм, который активен на протяжении всего метода. Разница тривиально устраняется компилятором простым объявлением суммы всех локальных переменных во всех блоках области видимости в качестве рамки активации. Это роскошь, которую интерпретатор Python не может себе позволить.

5
ответ дан 14 December 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: