메모리 구조

유명현·2022년 1월 2일
0

공부를 이것저것 하다보니 메모리 구조에 대해 혼동이 있어 다시 한번 공부할겸 정리하고자 한다.

<프로그램의 실행 순서>

위 그림은 메모리 구조를 설명 하기전 프로그램의 실행되는 과정을 나타낸 것이다.

<메모리 구조>

1. 코드(Code) 영역

우리가 작성한 소스코드가 들어가는 부분으로 Text 영역이라고 불린다.
코드영역은 ROM에 위치하며, ROM에 DATA로는 상수, 함수, 제어문등이 들어가 있다.

2. 데이터(DATA) 영역

RAM의 위친한 DATA영역은 초기화를 했냐 하지 않았냐에 따라 BSS, DATA로 나뉜다. 여기서 초기화할 경우 초기화값을 저장하고 있는 데이터는 CODE영역의 DATA에 저장이 되어있고 코드가 시작하면서 RAM에 위치로 옮겨 초기화 시켜주는 것이다.
주로 이여역은 전역변수와 정적(Static)이 할당되는 영역이며, 프로그램의 시작과 동시에 할당되며, 프로그램이 종료되어야 메모리가 소멸하는 여역이다.

3. 스텍(Stack) 영역

메모리의 Stack 영역은 함수의 호출과 관계되는 지역변수(local variable)와 매개변수(parameter)가 저장되는 영역이다.

Stack 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.

4.힙(Heap) 영역

메모리의 Heap 영역은 사용자가 직접 관리할 수 있는 (+관리해야 하는) 메모리 영역이다.
Heap 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
Heap 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.

<같은 공간을 공유해서 사용하는 HEAP과 STACK>

*HEAP과 STACK영역이 서로 침범하게 되면 오버플로우 현상이 발생한다.

profile
기억보다 기록을

0개의 댓글