Computer Science/프로그래밍 언어론

프로그래밍 언어론 - 선언 블록 영역

Beomsu Koh 2023. 5. 18.

프로그래밍 언어론 - 선언 블록 영역

선언은 변수에 이름과 데이터 타입 등의 속성을 부여하는 문장이다

선언의 종류

  • 명시적 선언 : 선언문을 사용하여 변수 이름을 나열하고, 이들 속성에 부여하는 방법
    • 예약어 int를 사용하여 변수 x의 데이터 유형을 명시적으로 지정합니다.
    • 예: int x;
  • 묵시적 선언 : 실행 시간 중에 일어나거나 프로그램 실행 과정에서 변경 되는 바인딩
    • FORTRAN은 변수 이름이 선언문 없이 사용되면 선언된 것으로 간주합니다.
    • 일반적으로 변수 이름이 ‘I’, ‘J’, ‘K’, ‘L’, ‘M’ 또는 'N’으로 시작하면 정수 유형으로 간주됩니다.
    • 그렇지 않으면 실제 유형으로 간주됩니다.

블록

  • 일련의 문장 집합으로 자체적인 선언을 가질 수 있는 프로그램 단편

영역

  • 이름의 사용이 허락되고 있는 범위
  • 예) 변수 x의 영역은 선언된 지점부터 func 함수의 끝까지

정적 영역

  • 이름에 해당하는 변수를 찾을 때 자신을 포함하고 있는 블록에서 선언되었는지 살펴본다.

  • 아니면 그 바깥쪽 블록에서 선언되었는지를 살펴본다

  • 임의의 블록에서 변수 x에 대한 참조가 이루어졌을 때 변수 x의 선언문을 찾는 과정

    • ① 임의의 블록에 속한 선언문에 x에 대한 선언문 찾기
    • ② 없으면, 임의의 블록을 포함하는 바깥쪽 블록의 선언문에서 x에 대한 선언문
    • 찾기
    • ③ x에 대한 선언문을 찾을 때까지 계속됨
    • 가장 큰 블록의 선언문에서도 x를 발견하지 못하면 선언되지 않은 변수 오류 발생
  • 정적 영역

  • 영역 지정 연산자

  • 오류 발생

동적 영역

이름에 해당하는 변수를 찾을 때 외향적인 구조에 기반하지 않고, 부프로그램들의 호출 순서에 기반

  • 먼저 자신을 포함하고 있는 블록에서 선언되었는지 확인
  • 아니면 자신을 포함한 블록(부프로그램)을 호출한 문장을 포함하고 있는 블록에서 선언된 것인지를 조사
  • 해당 변수를 찾을 때까지 반복

할당

  • 기억장소 할당
    • 변수에 메모리 공간을 바인딩하는 과정
  • 회수
    • 변수로부터 바인딩이 해제된 메모리 공간을 가용 공간으로 돌려주는 과정
  • 수명
    • 변수가 특정 메모리 주소에 바인딩되어 있는 시간
    • 변수의 수명은 변수가 메모리 공간에 바인딩될 때 시작되며 회수될 때 종료
  • 변수의 할당은 수명에 따라 정적 할당, 스택 기반 할당, 동적 할당으로 분류
  • 변수 할당과 관련된 메모리 구조기억장소 할당
    • 정적 영역은 크기가 정해져 있음
    • 스택과 힙은 각기 반대 방향으로 영역이 성장

정적 할당

  • 변수에 메모리 공간이 정적으로 할당되는 것
  • 한번 할당되면 프로그램 실행이 종료될 때까지 할당 상태가 그대로 유지
  • 정적 할당이 이루어지는 메모리 공간은 정적 영역

자동 할당(스택 기반 할당)

  • 자동 할당(automatic allocation)이라고도 함
  • 변수의 타입은 정적으로 할당되지만 메모리 공간은 실행 시간 중에 할당
  • 스택 기반 할당이 이루어지는 메모리 공간은 스택


동적 할당

  • 명시적인 명령어에 의해 실행 시간에 할당
  • 동적 할당이 이루어지는 메모리 공간은 힙(heap)
  • 동적으로 할당된 영역은 포인터나 참조 변수를 통해서 참조 가능
    예제 : 동적 할당


부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

'Computer Science > 프로그래밍 언어론' 카테고리의 다른 글

구문 도표  (0) 2023.05.22
정규 문법의 연산 순서  (1) 2023.05.22
프로그래밍 언어론 - 바인딩  (0) 2023.05.18
프로그래밍 언어론 - 변수  (0) 2023.05.18
고차 함수  (0) 2023.04.17

댓글