C언어 - 저장공간의 다섯가지 분류 , 자동변수, 레지스터 변수

2020. 11. 13. 11:19개인공부/C언어

//BSS는 block started by symbol의 약어이다. .bss bss는 초기에 오직 제로 값으로 표시된 정적으로 할당된 변수가 포함된 데이터 세그먼트의 일부로 컴파일러나 링커에 의해 사용된다. 즉, 초기화되지 않은 전역 데이터를 위한 영역이다

 

 

5가지 분류

1.자동

2.레지스터

3.고정적, 내부연결

4. 고정적, 외부연결

5. 고정적, 연결없음

 

 

 

 

2가지 분류

non-static

1.자동

2.레지스터

 

static

3.고정적, 내부연결

4. 고정적, 외부연결

5. 고정적, 연결없음

 

데이터 또는 BSS, 고정적.

고로 프로그램이 시작과 끝까지 메모리에 끝까지 자리한다.

 

 

register는 cpu에 자리한다.

 

 

 

할당메모리

운영체제에게 큰 공간이 필요한데 어느정도의 크기인지 확실하지 않음. 

운영체제는 포인터만 제공. 마치 식별자가 있는 것처럼 사용.

 

 

 

 

 

 

 

 

 

 

우리가 지금까지 써온 지역변수가 자동.(지속기간이 자동적으로 결정되어서 자동)

 

 

 

 

 

 

 

 

 

 

 

변수앞에 register를 붙이면 컴파일러에게 가급적이면 register로 등록해주세요 라고 요청하는것.

하지만 등록될수도 안될수도 있다.

 

 

register로 등록하면 &(adress-of operator)를 쓸수 없음.

register int r;
int* ptr = &r; //컴파일 에러

 

 

 

 

 

출처 : 홍정모의 따라배우는 C언어