프로그램이 실행하게 되면 OS는 RAM에 공간을 할당해 줍니다.
메모리의 영역은 Code, Data, Heap, Stack 영역으로 나뉩니다.
Code
- 작성된 소스코드가 저장되는 영역
- CPU는 코드 영역에 저장된 명령어를 하나씩 가져가 실행
- 읽기만 가능
- 프로그램의 시작하고 종료되면 소멸
Data
- 전역 변수와 static 변수가 할당되는 영역
- 프로그램의 시작과 동시에 할당, 프로그램이 종료되면 메모리에서 소멸
Heap
- 동적으로 할당된 변수가 들어가는 영역
- 프로그래머가 원하는 시점에 직접 메모리를 할당, 소멸할 수 있는 영역
- 런타임 시 크기가 결정됨
- class instance, 클로져 같은 참조 타입 값의 부분에 해당.
- swift는 ARC가 자동으로 메모리를 관리해줌
- - ARC 내용
- https://jusung.gitbook.io/the-swift-language-guide/language-guide/23-automatic-reference-counting
- https://tdcian.tistory.com/173
- https://developer.apple.com/videos/play/wwdc2021/10216/
Stack
- 함수 호출 시 생성되는 지역변수, 매개 변수가 저장되는 영역
- 함수 호출이 끝나면 메모리 해제
'Computer Science' 카테고리의 다른 글
인터럽트란? (Interrupt) (0) | 2022.06.29 |
---|---|
프로세스와 스레드의 차이 (0) | 2022.06.14 |
파이프라인이란? (0) | 2022.06.09 |
중앙처리장치(CPU)의 작동원리 (0) | 2022.06.07 |
캐시(cache) 란 무엇인가? (0) | 2022.05.31 |