[UNSEEN] 테스트 대비 3. 메모리 구조

Doorbals·2023년 2월 16일
0

UNSEEN

목록 보기
3/10

메모리 구조

프로그램을 실행시키면 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당해준다.
할당되는 메모리 공간은 크게 코드(Code), 데이터(Data), 힙(Heap), 스택(Stack) 영역으로 나뉜다.


코드(Code) 영역

실행할 프로그램의 코드가 저장되는 영역으로, 텍스트 영역이라고도 한다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다. (그림에는 X)


데이터(Data) 영역

  • 전역 변수static 변수가 할당되는 영역
  • 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리에서 소멸한다.
int a = 10;	// a는 데이터 영역에 할당된다.

int main()
{
	...
}

힙(Heap) 영역

  • 필요에 의해 동적으로 메모리를 할당할 때 사용
  • 낮은 주소에서 높은 주소의 방향으로 할당
  • new 연산자 사용하거나 vector 등의 컨테이너를 사용할 때 동적으로 메모리 사용하게 된다.
  • 런타임에 크기 결정

스택(Stack) 영역

  • 함수 호출 시 생성되는 지역 변수매개 변수가 저장되는 영역
  • 함수 호출이 완료되면 소멸한다.
  • 높은 주소에서 낮은 주소의 방향으로 할당
  • 후입 선출(LIFO)의 구조
  • 컴파일 타임에 크기 결정
int a = 10;
int b = 20;

void fct1(int c)
{
	int d = 30;		// 매개 변수 c와 지역 변수 d가 스택 영역에 할당 
}

void fct2(int e)
{
	int f = 40;		// 매개 변수 e와 지역 변수 f가 스택 영역에 할당 
}

int main()
{
	int i = 100;	// 지역 변수 i가 스택 영역에 할당
    
    fct1(i);
    fct2(i);
}


👁️‍🗨️ 참고
https://junghyun100.github.io/힙-스택차이점
https://dsnight.tistory.com/50

profile
게임 클라이언트 개발자 지망생의 TIL

0개의 댓글