참고자료 : https://medium.com/jinshine-기술-블로그/컴퓨터-기초-메모리구조-memory-structure-4fa6010f333e

Untitled

프로그램이 실행하게 되면 운영체제(OS)는 메모리(RAM)에 공간을 할당해준다.

메모리 공간 종류는 4가지 : Code, Data, Heap, Stack

Untitled

import Foundationvar a: Int = 10; // 데이터 영역에 할당
var b: Int = 20; // 데이터 영역에 할당func dataFunc() -> Bool {
 return true
}
func someFunc1(c: Int) {
 int d = 30;
 // 매개변수 c와 지역변수 d가 스택영역에 할당
}void someFunc2(e: Int) {
 int f = 40;
 // 매개변수 e와 지역변수 f가 스택영역에 할당
}

위의 HEAP과 STACK영역은 사실 같은 공간을 공유한다. HEAP이 메모리 위쪽 주소부터 할당되면 STACK은 아래쪽부터 할당되는 식이다. 그래서 각 영역이 상대 공간을 침범하는 일이 발생할 수 있는데 이를 각각 HEAP OVERFLOW, STACK OVERFLOW라고 칭합니다.

Stack 영역이 크면 클 수록 Heap 영역이 작아지고, Heap 영역이 크면 클수록 Stack 영역이 작아집니다.

궁금했던 점 :

컴파일과 런 타임 차이점?

컴파일 에러