[Computer Science] 메모리 스택, 힙

M_yeon·2023년 3월 9일
0

Computer Science

목록 보기
2/2

메모리

메모리는 컴퓨터에서 데이터와 프로그램을 저장하는 공간입니다.
프로그램에서 사용되는 변수들을 저장할 메모리도 필요한데, 운영체제는 프로그램을 실행하기 위해 다양한 메모리 공간을 확보하고 있다.

가상주소공간 (virtual address space)

  • 프로세스가 생성되면 실행되는 순간 4GB 메모리를 할당 받는다.
    이는 실제 메모리는 아니고 운영체제에게 4GB를 할당받은 것 처럼 사용한다.
  • 할당받은 4GB중 2GB는 운영체제가 담당하는데 커널영역이라고 하며
  • 나머지 2GB는 실제 프로그램이 담당하는데 이를 유저 영역이라고 한다.
    유저영역은 코드 영역, 데이터 영역, 힙 영역, 스택 영역 이 각자의 공간을 확보하고 있다.

스택: LIFO(Last-In-First-Out)

스택은 데이터를 일시적으로 저장하는 공간으로,데이터의 추가와 삭제는 마지막에 추가된 데이터가 먼저 삭제되는 후입선출(Last-In-First-Out, LIFO) 구조입니다.
정적메모리 즉, 함수 호출이나 로컬(지역) 변수 등의 정보를 저장하기 위해 사용됩니다.

  • 정적 메모리 할당
  • 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역
  • 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸
  • 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출
  • 후입선출(LIFO, Last-In First-Out) 방식
  • 메모리의 높은 주소에서 낮은 주소의 방향으로 할당

힙:

힙은 동적으로 할당되는 데이터를 저장하는 공간으로, 데이터의 추가와 삭제에 제약이 없습니다.
전역변수를 다루며 메모리가 동적으로 할당되어야 할 때 사용됩니다.

예를 들어, 프로그램 실행 중에 사용자로부터 입력받은 데이터나, 대용량 데이터 처리를 위해 동적으로 할당되는 배열 등이 힙에 저장됩니다.

메모리, 스택, 은 컴퓨터 프로그래밍에서 중요한 개념이며, 프로그램이 메모리를 어떻게 사용하는지 이해하는 것은 프로그래밍의 기초입니다.

  • 동적 메모리 할당
  • 사용자가 직접 관리할 수 있는 ‘그리고 해야만 하는’ 메모리 영역
  • 사용자에 의해 메모리 공간이 동적으로 할당되고 해제
  • 메모리의 낮은 주소에서 높은 주소의 방향으로 할당

0개의 댓글