메모리 저장 구조
Code 영역
- 함수!, 제어문, 상수 등등 함수에 대한 기계어 코드가 들어감
- 읽기전용 데이터
- CPU 가 이 영역에 있는 명령을 읽고 처리
Data 영역 (DATA +BSS)
- 초기값 있는 전역변수, 배열, static으로 선언된 변수가 들어감
- 전역(global)변수, 정적(static)변수, 초기화된 배열과 그 구조들이 저장되는 영역
- 프로그램 시작과 동시에 할당되고, 프로그램 종료시 메모리 소멸.
- 전역 변수와 정적(static) 변수가 저장되는 영역입니다.
Bss 영역
- 초기값 없는 전역변수, 배열, static으로 선언된 변수가 들어감
- Compile time에 크기가 결정되고 이후로 변동되지 않는다.
Heap 영역
- 동적할당(malloc)으로 할당된 변수가 들어감. 프로그래머 영역
- 더 이상 해당 힙 영역을 참조하는 변수가 없을 경우 소멸된다.
- 선입선출
- 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.
Stack 영역
- 지역변수, 블록내에서 할당된 변수가 들어감. 블록을 벗어나면 사라짐
- 함수 시작과 함계 변수들이 생성되었다가 종료시 반환
- 값타입 저장공간
- 선입후출
- 스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출
- 스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향
Run time에 Bss와 Heap사이를 기준으로 해서, Heap은 아래로 순차적으로 메모리를 사용하고,
Stack은 위쪽으로 순차적으로 메모리를 사용한다
'프로그래밍 > C' 카테고리의 다른 글
메모리 누수 확인 (0) | 2019.05.01 |
---|---|
정적 바인딩(Static binding). 동적 바인딩(Dynamic binding) (2) | 2019.05.01 |
메모리 단편화 (페이징,세그멘테이션,메모리풀) (0) | 2019.04.30 |
malloc() [C]과 new [C++] (0) | 2019.04.29 |
데이터형 크기 (0) | 2019.04.29 |