2010-03-05 1 views
4

C#에서 실행 프레임이란 무엇입니까 (활성 프레임에 대해 들었던 것과 관련이 있습니다). IIRC 메서드 매개 변수가 있지만 모든 세부 정보를 기억할 수없는 슬롯입니다.실행 프레임이란 무엇입니까?

감사

답변

2

난 당신이 스택 프레임을 참조하고 생각 -이 경우 대답은 특정 언어 C# 또는 실제로 특정이 아니라, 당신의 프로그램에서 실행중인 플랫폼. Call StackWikipedia article에서 :

호출 스택은 스택의 (때로는 활성화 기록라고도 함) 프레임으로 구성된다. 이것들은 서브 루틴 상태 정보를 포함하는 기계 구조의 데이터 구조입니다. 각 스택 프레임 은 리턴으로 아직 종료되지 않은 서브 루틴 에 대한 호출에 해당합니다.

스택 프레임을 포함한 스택에 대한 자세한 설명은 this answer to a previous question도 참조하십시오.

+0

실행 프레임이 스택 프레임과 동일합니까? 나는 용어를 분리하여 사용하는 것을 보았지만 exec 프레임 (스택 프레임을 알고 있음)을 의미합니다. – dotnetdev

+0

예,이 용어는 일반적으로 동의어이며 최소한 C#과 관련되어 있습니다. – razlebe

+0

@nobugz의 다른 답변보기 - "Execution Frame"은 다른 언어, 특히 Python과 관련하여 다른 의미를 가질 수 있습니다. – razlebe

5

"실행 프레임"은 특히 Python과 같이 인터프리터 언어에서 사용되는 용어입니다. 이것은 C#과 매우 다른 실행 모델입니다. 가장 유사한 것은 C# 메서드의 범위 블록으로, 중괄호로 묶은 코드 묶음입니다. 파이썬 실행 프레임은 함수 본문으로 확장 될 수 있지만 이제는 C#의 스택 프레임과 동일합니다. 활성화 프레임의 또 다른 용어입니다.

C# 컴파일러는 C#의 범위 블록에 로컬 인 선언을 인식합니다. 런타임은 전체 메소드 수명 동안 활성화 된 스택 프레임 만 인식합니다. 그 차이점은 모든 스코프 블록의 모든 로컬 변수의 합계를 활성화 프레임으로 선언함으로써 컴파일러가 쉽게 결정할 수 있습니다. 파이썬 인터프리터가 감당할 수없는 사치입니다.

+0

나를 교육하기 위해 +1. 나는이 사이트를 좋아한다. – razlebe

관련 문제