메모리 구조
영역 | 예시 |
코드 영역 | 실행할 프로그램의 코드 |
데이터 영역 | 상수, 리터널, 전역 변수 |
힙 영역 | 동적 할당 (런 타임에 크기 결정) |
스택 영역 | 지역 변수, 매개변수 (컴파일 타임에 크기 결정) |
데이터 영역
- 전역 변수와 static 변수가 할당되는 영역
- 프로그램 시작 동시에 할당된다. main 함수가 호출되기 전 할당
- 프로그램 종료될 때까지 존재, 종료 시 메모리에서 소멸
변수 선언
int main(){
......
return 0;
}
스택 영역
- 함수 호출 시 생성되는 변수가 저장되는 영역
- 함수 종료 시 메모리에서 소멸된다.
- 컴파일 타임에 크기가 결정된다 = 미리 크기를 정해야한다 = 유연성이 없다.
- 컴파일 타임 : 컴파일이 진행되는 시간
int number(int a){
int a=999;
}
int main(){
int a=1;
number(a)
printf("%d",a); // 1 출력
return 0;
}
힙 영역
- 메모리를 직접 관리해야하는 영역
- 프로그래머가 직접 공간 할당, 해제하는 공간
- 런타임에 크기가 결정된다. = 유연성이 높다
- 런타임 타임 : 프로세스가 실행 중인 시간
'C > 기본 문법 내용 정리' 카테고리의 다른 글
배열 포인터와 포인터 배열 (0) | 2022.04.09 |
---|---|
파일 입출력 (0) | 2022.03.08 |
10장. 구조체 (0) | 2022.03.01 |
9장. 문자열 (0) | 2022.02.08 |
8장. 포인터 (0) | 2022.02.03 |