Storage Class

Mokwon Univ 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에 만들어지나?
Posted by 용학도리
,