반응형
C 언어에서 대략 메모리 구조는 위와 같이 생겼다.
- 코드 영역(Code)
- 코드 영역은 실행할 프로그램의 코드가 저장되는 영역.
- 텍스트 영역(Text)라고도 불림.
- CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리.
- 데이터 영역(Data)
- 데이터 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장됨.
- 데이터 영역은 프로그램의 시작과 함께 할당, 프로그램이 종료되면 소멸.
- 스택 영역(Stack)
- 스택 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역임.
- 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸.
- 스택 영역에 저장되는 함수의 호출 정보는 스택 프레임(Stack Frame)이라고함.
- 스택 영역은 push 동작으로 데이터를 저장하고, pop 동작으로 데이터를 인출.
- LIFO(Last In First Out) 방식이므로 가장 늦게 저장된 데이터가 가장 먼저 인출됨.
- 스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됨.
- 힙 영역(Heap)
- 메모리의 힙 영역은 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역.
- 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됨.
- 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됨.
추가 자료
스택 프레임(Stack Frame)이란? + 스택 오버플로우(Stack Overflow)
출처
http://www.tcpschool.com/c/c_memory_structure
반응형
'컴퓨터 과학(ComputerScience)' 카테고리의 다른 글
가비지 컬렉션(Garbage Collection) (0) | 2022.07.24 |
---|---|
JVM(자바 가상 머신)의 내부 구성 및 동작 원리 (0) | 2022.07.24 |
캐시 메모리(Cache Memory) 그리고 캐시의 지역성(Cache Locality) (0) | 2022.07.23 |
메모리의 동적할당(C언어) (0) | 2022.07.23 |
스택 프레임(Stack Frame)이란? + 스택 오버플로우(Stack Overflow) (0) | 2022.07.22 |
최근댓글