Differences between Stack and Heap

2021. 11. 29. 09:59·여러가지/알고리즘 & 자료구조

메모리 구조

프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드되어야 해요.
그리고 프로그램에 사용되는 변수들을 저장 할 메모리도 필요해요.
따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있죠.
프로그램이 운영체제로부터 할당 받는 대표적인 메모리 공간은 4가지가 존재해요

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

메모리구조 이미지1

 

코드영역

메모리의 코드 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부릅니다. 

 

데이터 영역

메모리의 데이터 영역은 프로그램의 전역 변수와 정적변수가 저장되는 영역이에요.

데이터 영역은 프로그램 시작과 함께 할당되며, 프로그램이 종료되면 소멸해요. 

 

스택 영역

메모리의 스택 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이에요. 

스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸해요. 

이렇게 스택 영역에 저장되는 함수는 호출 정보를 스택 프레임이라고 하고요. 

스택 영역은 푸시 동작으로 데이터를 저장하고, 팝 동작으로 데이터를 인출합니다. 

이러한 스택은 후입선출 방식에 따라 동작하므로 가장 늦게 저장된 데이터가 가장 먼저 인출 됩니다. 

스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됩니다. 

 

힙 영역

메모리의 힙 영역은 사용자가 직접 관리할 수 있는 '그리고 해야만 하는 ' 메모리 영역입니다. 

힙 영역은 사용자에 의해 메로리 공간이 동적으로 할당되고 해제됩니다. 

힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당 됩니다. 

 

스택과 힙의 장단점 

 

저작자표시 (새창열림)

'여러가지 > 알고리즘 & 자료구조' 카테고리의 다른 글

[백준] 상수 - 2908번  (0) 2024.05.30
[백준] 할리갈리 - 21760번  (0) 2024.05.30
[백준] 단어의 개수 - 1152번  (0) 2024.05.30
스택: 데이터를 차곡차곡 쌓기  (0) 2021.11.29
🛩동적 배열이란?  (0) 2021.11.29
'여러가지/알고리즘 & 자료구조' 카테고리의 다른 글
  • [백준] 할리갈리 - 21760번
  • [백준] 단어의 개수 - 1152번
  • 스택: 데이터를 차곡차곡 쌓기
  • 🛩동적 배열이란?
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (283)
      • 여러가지 (108)
        • 알고리즘 & 자료구조 (73)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (39)
        • 파이썬 (31)
        • 자바 (3)
        • 스프링부트 (5)
      • 컴퓨터 구조와 운영체제 (3)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (0)
        • 암호화폐 (0)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    Redis
    프로그래머스
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    docker
    mybatis
    Python
    WebFlux
    RDS
    reactor
    FastAPI
    AWS
    ecs
    SAA
    시험
    spring
    celery
    파이썬
    백준
    완전탐색
    java
    Spring Boot
    그리디
    OOP
    DP
    취업리부트
    EC2
    Spring WebFlux
    Docker-compose
    항해99
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
Differences between Stack and Heap
상단으로

티스토리툴바