반응형
기억장소 할당
- 변수의 값을 기억시킬 기억장소를 할당(allocation)하면 변수의 메모리 위치가 바인딩됨
- 변수의 필요성이 없어지면 할당된 기억장소가 반납됨
생명 시간(lifetime)
- 변수의 값과 기억장소가 바인딩되어 있는 시간간격
- 생명시간에 따른 변수 분류 : 정적변수, 스택변수, 명시적 히프변수, 묵시적 히프변수
1. 정적 변수(static variable)
기억장소가 실행 이전에 바인딩되어 실행종료까지 계속되는 변수이며, 실행시간 전체에 걸친 생명시간을 가진다. 해당 단위 프로그램이 실행중이 아닌 동안에도 바인딩이 유지됨. C/C++, Java에서는 static을 지역변수의 선언 앞에 붙이면 정적 변수로 선언된다. 전역 변수도 정적 변수로 볼 수 있다
(1) 장점
프로그램 실행중 기억장소 위치 불변. 바로 접근 가능
할당과 반납이 필요 없기 때문에 실행시간이 단축됨
(2) 단점
변수 위치가 메모리상에 고정되어 있기 때문에 순환프로시저 작성이 불가능하다
변수들간에 기억장소를 공유할 수 없어서 기억장소 관리가 비효율적이다
2. 스택 변수(stack variable)
변수가 선언된 블럭이 실행될 때 생성되고, 그 블럭을 벗어날 때 소멸됨.준 정적변수(semistatic)
(1) 장점
순환프로시저 작성 가능하고, 기억장소를 효율적으로 사용할 수 있음
(2) 단점
기억장소를 효율적으로 사용할 수 있다
실행시 기억장소를 관리하기 위한 시간이 필요하고,
스택지역을 변수에 할당함으로 인한 POP, PUSH연산 필요->연산처리에 시간이 소요됨
3. 명시적 힙(heap) 변수
프로그래머가 필요에 따라 명령어를 써서 생성,소멸시킴. 메모리의 힙 영역에 할당됨. 포인터를 사용하여 접근함. C언어 : malloc, C++/Pascal/Ada : new, delete
(1) 장점
동적 자료구조에 적합하고 나무구조, 리스트구조에 유용하다
(2) 단점
포인터 접근으로 인해 오류발생 위험 증가
4. 묵시적 힙(heap) 변수
변수에 값이 부여될 때 힙(heap)의 기억장소가 할당됨.APL,Perl에서 지원
(1) 장점
프로그램 융통성 증가
(2) 단점
동적 속성 처리를 위한 실행시간 증가
컴파일러 오류처리능력 저하
- 변수의 값을 기억시킬 기억장소를 할당(allocation)하면 변수의 메모리 위치가 바인딩됨
- 변수의 필요성이 없어지면 할당된 기억장소가 반납됨
생명 시간(lifetime)
- 변수의 값과 기억장소가 바인딩되어 있는 시간간격
- 생명시간에 따른 변수 분류 : 정적변수, 스택변수, 명시적 히프변수, 묵시적 히프변수
1. 정적 변수(static variable)
기억장소가 실행 이전에 바인딩되어 실행종료까지 계속되는 변수이며, 실행시간 전체에 걸친 생명시간을 가진다. 해당 단위 프로그램이 실행중이 아닌 동안에도 바인딩이 유지됨. C/C++, Java에서는 static을 지역변수의 선언 앞에 붙이면 정적 변수로 선언된다. 전역 변수도 정적 변수로 볼 수 있다
(1) 장점
프로그램 실행중 기억장소 위치 불변. 바로 접근 가능
할당과 반납이 필요 없기 때문에 실행시간이 단축됨
(2) 단점
변수 위치가 메모리상에 고정되어 있기 때문에 순환프로시저 작성이 불가능하다
변수들간에 기억장소를 공유할 수 없어서 기억장소 관리가 비효율적이다
2. 스택 변수(stack variable)
변수가 선언된 블럭이 실행될 때 생성되고, 그 블럭을 벗어날 때 소멸됨.준 정적변수(semistatic)
(1) 장점
순환프로시저 작성 가능하고, 기억장소를 효율적으로 사용할 수 있음
(2) 단점
기억장소를 효율적으로 사용할 수 있다
실행시 기억장소를 관리하기 위한 시간이 필요하고,
스택지역을 변수에 할당함으로 인한 POP, PUSH연산 필요->연산처리에 시간이 소요됨
3. 명시적 힙(heap) 변수
프로그래머가 필요에 따라 명령어를 써서 생성,소멸시킴. 메모리의 힙 영역에 할당됨. 포인터를 사용하여 접근함. C언어 : malloc, C++/Pascal/Ada : new, delete
(1) 장점
동적 자료구조에 적합하고 나무구조, 리스트구조에 유용하다
(2) 단점
포인터 접근으로 인해 오류발생 위험 증가
4. 묵시적 힙(heap) 변수
변수에 값이 부여될 때 힙(heap)의 기억장소가 할당됨.APL,Perl에서 지원
(1) 장점
프로그램 융통성 증가
(2) 단점
동적 속성 처리를 위한 실행시간 증가
컴파일러 오류처리능력 저하
반응형
'B1:기초 Basement' 카테고리의 다른 글
개발 생산성 향상을 위한 조언-김익환 (0) | 2006.09.02 |
---|---|
참조 환경과 기호 상수 (referencing environment and symbolic constant) (0) | 2006.08.31 |
동적 형 바인딩(Dynamic Type Binding) (0) | 2006.08.30 |
변수 (Variables) (0) | 2006.08.30 |
속성과 바인딩(Attribute and Binding) (0) | 2006.08.30 |