c
[c] 메모리 구조
ohojee
2023. 2. 19. 03:34
- TEXT
- 코드 영역 ⇒ 프로그램을 실행시키기 위해 구성되는 것들 저장
- 제어문, 함수, 상수
- DATA
- 프로그램(메인함수) 실행 전에 선언되어 프로그램이 끝날 때까지 저장
- 전역변수, 정적변수 저장
- 더 세분화하면 초기화 된 변수/초기화되지 않은 변수 영역으로 나뉨
- HEAP
- 사용자에 의해 관리되는 영역
- 동적할당된 변수
- 낮은 주소에서 높은 주소로 저장
- STACK
- 함수 호출 시 변수들 저장
- 지역변수, 매개변수
- 함수가 종료되면 그 함수에 할당된 변수들을 메모리에서 해제
- 높은 주소에서 낮은 주소로 저장
- stack의 사이즈는 윈도우는 1MB, 리눅스는 8MB
heap영역과 stack영역을 합쳐 잔여 램만큼의 공간 할당 가능
stack | - 높은 주소부터 offset과 같이 쌓임 ⇒ 속도 빠름 - 크기가 작음 |
heap | - stack과 달리 사용/미사용의 개념으로 관리됨 ⇒ 메모리 공간에 구멍생길 수 o - stack에 비해 속도 느림 |
메모리주소 1당 0000 0000, 즉 2^8까지 저장 가능, 그래서 char가 1byte인데 char형의 범위가 256인 것
참고 블로그