메모리 구조
프로그램 실행 시 OS로 부터 할당받는 대표적인 메모리 공간은 다음과 같다.
1. 코드 영역
2. 데이터 영역
3. 스택 영역
4. 힙 영역
코드 영역
실행할 프로그램의 코드가 저장되는 영역.
CPU는 코드 영역에 저장된 명령어를 하나씩 처리한다.
데이터 영역
프로그램의 전역 변수, 정적 변수가 저장되는 영역.
프로그램 시작과 동시에 할당 되며, 프로그램이 종료되면 소멸한다.
힙 영역
사용자가 직접 관리할 수 있고, 관리 해야만 하는 메모리 영역이다.
사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.
런타임에 크기가 결정된다.
스택 영역
함수의 호출과 관계되는 지역 변수, 매개 변수가 저장되는 영역.
함수의 호출과 함께 할당되며, 함수의 호출이 완료 되면 소멸한다.
스택 영역은 push 동작으로 데이터를 저장하고, pop 동작으로 데이터를 인출한다.
후입 선출 (LIFO, Last-In First-Out) 방식에 따라 동작하므로,
가장 늦게 저장된 데이터가 가장 먼저 인출된다.
메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다.
컴파일 타임에 크기가 결정된다.
'공부 > 개념 & 유용한 내용' 카테고리의 다른 글
쓰레드와 프로세스의 차이점 (0) | 2020.07.01 |
---|---|
스택 프레임 , 스택 오버 플로우 (0) | 2020.06.17 |
C# - 코루틴 & yield (0) | 2020.06.15 |
박싱 & 언박싱 (0) | 2020.06.15 |
포인터와 참조자의 차이 (0) | 2020.06.15 |