새소식

CS

[CS] 메모리 구조

  • -

메모리 구조


  • 메모리 구조는 Code 영역, Data 영역, Heap 영역, Stack영역으로 구성되어 있음

메모리 구조


Code 영역

  • 작성한 코드가 기계어로 저장됨
  • Compile(컴파일) Time 결정
  • 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장

 

Data 영역

  • 전역 변수, static 변수 저장
    ※ Swift static 키워드는 lazy가 기본 동작 → 해당 값에 접근할 때 메모리에 할당
  • 프로그램 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리 해제됨
  • 실행 도중 변숫값이 변경될 수 있으니 Read-Write로 지정

 

Heap 영역

  • malloc / alloc으로 Heap에 메모리 할당할 수 있음 (동적할당)
  • 사용하고 난 후 반드시 메모리 해제해야 함 → 해제하지 않을 경우 memory leak 발생
  • Code, Data, Stack 중 유일하게 RunTime 시 결정
    데이터의 크기가 확실하지 않은 경우 사용
    → Class Instance, Closure (참조 타입)은 모두 Heap에 할당
  • 장점
    ① 메모리 크기에 제한이 없음
    ② 본질적인 범위가 전역 → 프로그램의 모든 함수에서 액세스 가능
  • 단점
    할당 / 해제 작업 → 속도 저하
    Heap 손상(이중 해제, 해제 후 사용 등) → 작업으로 인한 속도 저하
    Heap 경합(두 개 이상의 Thread가 동시에 접근하려고 할 때 Cock가 걸림)으로 인한 속도 저하
    ④ 메모리를 직접 관리 해야 함(해제 않을 경우 → 메모리 누수 발생)

 

Stack 영역

  • 함수 호출 시 함수의 지역변수, 매개변수, 리턴 값 등을 저장
  • 함수가 종료되면 저장된 메모리도 해제
  • Compile Time에서 결정 → 무한히 할당할 수 없음
  • 장점
    ① CPU가 Stack 메모리를 효율적으로 구성 → 속도가 매우 빠름
    ② 메모리를 직접 해제하지 않아도 됨
  • 단점
    ① 메모리 크기에 대한 제한 있음
    지역 변수만 엑세스 가능

Heap vs Stack

  Heap Stack
공통점 같은 메모리 공간을 공유
차이점 낮은 메모리 주소부터 할당 높은 메모리 주소부터 할당

 

 

 


출처

 

[OS] 메모리 구조 (Memory Structure) - code, data, stack, heap

컴퓨터의 메모리 구조에 대해 알아보자. 먼저, 아래 그림은 프로그램의 정보를 읽어 메모리에 로드되는 과정으로 프로그램이 실행하게 되면 OS는 메모리(RAM)에 공간을 할당해줍니다. 이 메모리

lxxyeon.tistory.com

 

메모리 구조 [Memory Structure]

안녕하세요. 오늘은 제목에서 밝혔듯 메모리 구조에 대해 알아보려 합니다. 흔히 메모리라고 하면 RAM을 지칭하는데요, 보통 컴퓨터 구조에 대해 학습하시거나 배우셨던 분들은 알겠지만 메모리

st-lab.tistory.com

 

iOS) 메모리 구조 (Code, Data, Stack, Heap)

안녕하세여~~ 소들입니다 :-))))) 오늘 웬 듣보잡 버그 한 놈이 나왔는데 처음에 메모리 참조 오류인 줄 알고 하루 종일 메모리에 대해서 공부 했는데 버그 원인은 메모리가 아니었음ㅋ (디코딩 네

babbab2.tistory.com

 

 

728x90

'CS' 카테고리의 다른 글

[CS] MVVM 패턴  (0) 2023.08.21
[CS] MVP 패턴  (0) 2023.08.14
[CS] MVC 패턴  (0) 2023.08.14
[CS] Framework vs Library  (0) 2023.08.05
[CS] 명령형 프로그래밍 vs 선언형 프로그래밍  (0) 2023.08.05
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.