Mokwon Univ
Storage Class
용학도리
2008. 8. 16. 16:48
c 언어는 4가지 storage class를 가진다. (auto, extern, register, static)
선언된 변수의 메모리 할당 종류이다.
( 변수 선언 시에 지정한다. 단, 지정되지 않으면 자동적으로 auto로 선언된다. )
- auto : stack에 일시적으로 저장된다.
- static : 메모리 상의 데이터 영역에 저장된다. 값을 유지한다.
- extern : 메모리 상의 데이터 영역에 저장된다. 값을 유지하고 외부파일에서 사용한다
- register : CPU 내의 레지스터 영역에 저장된다. 실행시 생성, 주소연산자(&)를 사용할수가 없음
register 변수는 하드웨어가 갖는 register의 수에 따라서 register 변수가 되기도 하고,
auto 변수가 되기도 한다.
register 변수는 프로그램의 수행 속도를 빠르게 할 때 사용한다.
각 storage class 의 life time과 특징 비교표
storage class 변수의 참조(scope)
register 선언된 block 내
auto 선언된 block 내
static internal 선언된 block 내
static external source file
extern 프로그램
전역과 지역변수의 차이
- 컴파일시 만들어지나 실행시 만들어지나?
- 값이 유지되는가? 사라지는가?
- heap에 만들어지나? stack에 만들어지나?