[ swift - 메모리 구조 ]

Yr Yr·2024년 1월 3일
0

TIL

목록 보기
26/39

구조

code 영역

  • 소스코드가 기계어 형태로 저장됨.
  • 읽기 전용.
  • 프로그램 시작~종료까지 메모리에 있음.

data 영역

  • 전역변수, 정적변수, 상수가 저장되는 곳.
  • 프로그램 시작과 동시에 할당, 종료되면 메모리가 해제됨.

heap 영역

  • 프로그램 실행중(런타임) 동적으로 할당된 데이터가 저장되는 곳.
    (* 런타임: 컴파일이 끝난 프로그램이 사용자가 실행하여 동작하는 타임)
  • 메모리의 자유 공간을 사용하여 데이터를 저장하므로 크기나 수명에 대한 동적인 요구에 대응할 수 있다.
  • 런타임 중 메모리 할당이 필요한 경우 사용되며, 개발자가 직접 제어할 수 있다.
  • 참조타입이 저장되는 영역
  • FIFO 구조

stack 영역

  • 소스코드가 컴파일러에 의해 기계어로 변환되는 시점(컴파일 타임)에 크기가 결정된다.
  • 함수 호출과 관련된 정보를 저장하는 데 사용된다.
  • 함수가 호출될 때마다 해당 함수의 지역변수, 매개변수, 반환주소, 함수 호출에 필요한 기타 정보가 저장된다.
  • 함수가 종료되면 저장된 메모리를 해제
  • 값 타임이 저장되는 영역
  • LIFO 구조

힙과 스택은 언제 써야할까?

  • 힙: 메모리 크기에 제한이 없기 때문에 데이터 크기를 모르거나 스택에 저장하기에 큰 데이터를 사용하는 경우
  • 스택: 힙을 할당하는 경우 이외에 사용

0개의 댓글