프로그래밍 언어론 - 선언 블록 영역
선언은 변수에 이름과 데이터 타입 등의 속성을 부여하는 문장이다
선언의 종류
- 명시적 선언 : 선언문을 사용하여 변수 이름을 나열하고, 이들 속성에 부여하는 방법
- 예약어 int를 사용하여 변수 x의 데이터 유형을 명시적으로 지정합니다.
- 예:
int x;
- 묵시적 선언 : 실행 시간 중에 일어나거나 프로그램 실행 과정에서 변경 되는 바인딩
- FORTRAN은 변수 이름이 선언문 없이 사용되면 선언된 것으로 간주합니다.
- 일반적으로 변수 이름이 ‘I’, ‘J’, ‘K’, ‘L’, ‘M’ 또는 'N’으로 시작하면 정수 유형으로 간주됩니다.
- 그렇지 않으면 실제 유형으로 간주됩니다.
블록
- 일련의 문장 집합으로 자체적인 선언을 가질 수 있는 프로그램 단편
영역
- 이름의 사용이 허락되고 있는 범위
- 예) 변수 x의 영역은 선언된 지점부터 func 함수의 끝까지
정적 영역
-
이름에 해당하는 변수를 찾을 때 자신을 포함하고 있는 블록에서 선언되었는지 살펴본다.
-
아니면 그 바깥쪽 블록에서 선언되었는지를 살펴본다
-
임의의 블록에서 변수 x에 대한 참조가 이루어졌을 때 변수 x의 선언문을 찾는 과정
- ① 임의의 블록에 속한 선언문에 x에 대한 선언문 찾기
- ② 없으면, 임의의 블록을 포함하는 바깥쪽 블록의 선언문에서 x에 대한 선언문
- 찾기
- ③ x에 대한 선언문을 찾을 때까지 계속됨
- ④ 가장 큰 블록의 선언문에서도 x를 발견하지 못하면 선언되지 않은 변수 오류 발생
-
정적 영역
-
영역 지정 연산자
-
오류 발생
동적 영역
이름에 해당하는 변수를 찾을 때 외향적인 구조에 기반하지 않고, 부프로그램들의 호출 순서에 기반
- 먼저 자신을 포함하고 있는 블록에서 선언되었는지 확인
- 아니면 자신을 포함한 블록(부프로그램)을 호출한 문장을 포함하고 있는 블록에서 선언된 것인지를 조사
- 해당 변수를 찾을 때까지 반복
할당
- 기억장소 할당
- 변수에 메모리 공간을 바인딩하는 과정
- 회수
- 변수로부터 바인딩이 해제된 메모리 공간을 가용 공간으로 돌려주는 과정
- 수명
- 변수가 특정 메모리 주소에 바인딩되어 있는 시간
- 변수의 수명은 변수가 메모리 공간에 바인딩될 때 시작되며 회수될 때 종료
- 변수의 할당은 수명에 따라 정적 할당, 스택 기반 할당, 동적 할당으로 분류
- 변수 할당과 관련된 메모리 구조기억장소 할당
- 정적 영역은 크기가 정해져 있음
- 스택과 힙은 각기 반대 방향으로 영역이 성장
정적 할당
- 변수에 메모리 공간이 정적으로 할당되는 것
- 한번 할당되면 프로그램 실행이 종료될 때까지 할당 상태가 그대로 유지
- 정적 할당이 이루어지는 메모리 공간은 정적 영역
자동 할당(스택 기반 할당)
- 자동 할당(automatic allocation)이라고도 함
- 변수의 타입은 정적으로 할당되지만 메모리 공간은 실행 시간 중에 할당
- 스택 기반 할당이 이루어지는 메모리 공간은 스택
동적 할당
- 명시적인 명령어에 의해 실행 시간에 할당
- 동적 할당이 이루어지는 메모리 공간은 힙(heap)
- 동적으로 할당된 영역은 포인터나 참조 변수를 통해서 참조 가능
예제 : 동적 할당
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'Computer Science > 프로그래밍 언어론' 카테고리의 다른 글
구문 도표 (0) | 2023.05.22 |
---|---|
정규 문법의 연산 순서 (1) | 2023.05.22 |
프로그래밍 언어론 - 바인딩 (0) | 2023.05.18 |
프로그래밍 언어론 - 변수 (0) | 2023.05.18 |
고차 함수 (0) | 2023.04.17 |