티스토리 뷰

프로그램 실행 시 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당함.

대표적으로 코드, 데이터, 힙, 스택 4가지가 있다.

 

 

01. 코드 (Code)

 - 실행할 프로그램의 코드가 저장되는 영역.

 - 기계어의 형태로 저장, 컴파일 타임에 결정되고, 중간에 코드를 바꿀 수 없게 Read-Only로 지정.

 - 텍스트 영역이라고 불린다.

 - CPU는 코드 영역에 저장된 명령을 하나씩 가져가서 처리.

 - 프로그램이 시작하고 종료될 때 가지 메모리에 계속 남는다.

 

02. 데이터 (Data)

 - 전역변수, static(정적) 변수가 저장되는 영역.

 - 전역변수, static 값을 참조한 코드는 컴파일 하고 나면 Data 영역의 주소값을 가르키도록 바뀐다.

 - 실행 중도에 전역변수가 변경될 수 있으니 이 영역은 Read-Write로 지정되어 있다.

 

03. 힙 (Heap)

 - 프로그래머가 직접 공간을 할당, 해제하는 메모리 공간.

 - malloc() 또는 new 연산자를 통해 메모리를 할당하고, free() 또는 delete 연산자를 통해 메모리를 해제한다.

 - 선입선출 (FIFO, First-In First-Out)의 방식으로, 가장 먼저 들어온 데이터가 가장 먼저 인출 된다.

 

04. 스택 (Stack)

 - 프로그램이 자동으로 사용하는 임시 메모리 영역

 - 함수 호출 시 생성되는 지역 변수, 매개 변수, 리턴 값, 돌아올 주소 등등이 저장되는 영역

   (즉 함수 호출이 완료되면 사라진다.)

 - 컴파일 타임에 크기가 결정되기 대문에 무한으로 할당할 순 없앋. 재귀 함수가 너무 깊게 호출이 되거나 함수가 지역

  변수를 너무 많이 가지고 있어 stack 영역을 초과하면 stack overflow 에러가 발생한다. 

 - 스택 영역에서 Push로 데이터를 저장하고 Pop으로 데이터를 인출한다.

 

 

 

REFERENCE

https://selfish-developer.com/entry/%EC%8A%A4%ED%83%9D-%ED%9E%99-%EC%BD%94%EB%93%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%98%81%EC%97%AD

 

스택, 힙, 코드, 데이터영역

OS에서 프로세스가 바라보는 메모리 영역은 크게 코드(Code), 데이터(Data), 힙(Heap), 스택(stack) 영역으로 나뉘어진다. Code 영역 프로세스가 실행할 코드와 매크로 상수가 기계어의 형태로 저장된 공

selfish-developer.com

https://all-young.tistory.com/17

 

메모리의 구조 (코드, 데이터, 힙, 스택 영역)

목차 메모리 코드(code) 영역 데이터(data) 영역 힙(heap) 영역 스택(stack) 영역 오버 플로우 메모리 위 그림과 같이, 프로그램이 실행되기 위해서는 운영체제(OS)가 프로그램의 정보를 메모리에 로드

all-young.tistory.com

https://wooono.tistory.com/339

 

[Memory] 코드, 데이터, 스택, 힙 영역

C언어의 메모리 구조 프로그램을 실행시키면, 운영체제는 우리가 실행시킨 프로그램을 위해, 메모리 공간을 할당해줍니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 4가지

wooono.tistory.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함