티스토리 뷰
728x90
코드 영역 (Code)
소스 코드 → *기계어 형태로 변형되어 수정이 불가능하게 Read-Only로 저장 된다.
기계어: 컴퓨터가 읽을 수 있는 0, 1 로 이루어진 언어.
시점
컴파일 타임
데이터 영역 (Data)
전역변수, 정적 (static) 변수가 저장 되는 영역
struct Person {
// 정적 변수로 데이터 영역에 할당
static let name = "Peppo"
}
// 전역변수로 데이터 영역에 할당
var age = Int
var height = Int
시점
컴파일 타임
프로그램이 시작할 때 할당
프로그램 종료시 소멸
힙 영역 (heap)
개발자가 할당/ 해제 하는 메모리 영역
mallock, calloc 으로 힙에 메모리를 할당할 수 있고, 이를 '동적 할당' 이라 한다.
사용 후 반드시 메모리 해제를 해줘야 한다. (why? - 메모리 누수 발생 때문)
BUT!
Swift의 경우,
class 인스턴스, 클로저 같은 참조 타입의 값을 통해 힙에 자동 할당/ 해제가 된다. (ARC)
예시
class Person {
var name: String
var age: Int
}
// class 인스턴스는 힙, person 변수는 스택 영역에 자동 할당 (ARC)
var person: Person = Person()
특징
- 메모리 크기에 대한 제한이 없음
- 전역 범위라 프로그램의 모든 함수에서 액세스 가능
시점
Code 영역, Data 영역, Stack 영역 중 유일하게 런타임 시 결정
스택 영역 (stack)
함수 호출 시, 함수 내부의 지역변수, 매개변수(parameter), 반환 값(return) 등이 저장되고,
함수가 종료되면 저장된 메모리도 자동으로 해제된다.
장점
스택은 CPU에서 관리하고 최적화 하기 때문에 힙(Heap)에 비해 속도가 빠릅니다.
func printName(food: String, rate: Int) -> String {
let message = "\(food)의 평점은 \(rate)점 입니다."
return message
}
printName(food: "대게", rate: 5)
// 대개의 평점은 5점 입니다.
단점
- 힙(Heap) 과 달리 메모리 크기 제한
- 지역 변수만 액세스 가능
시점
컴파일 타임
참고
728x90
'iOS' 카테고리의 다른 글
[Swift] 상속 (Inheritance) (0) | 2022.04.10 |
---|---|
[iOS] GCD 심화 - 동시성과 관련된 문제들 (Race condition, Tsan, DispatchQueue barrier, Thread-safe, Deadlocks, Priority Inversion) (0) | 2022.04.08 |
[iOS] LaunchScreen 설정 후 디바이스에만 나오지 않을때 (0) | 2022.04.05 |
[Swift] Subscripts (서브스크립트) (0) | 2022.04.01 |
[iOS] UserDefaults 로 객체를 저장을 해보자 (0) | 2022.03.30 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Swift
- swift programmers
- 원티드 프리온보딩
- Swift RIBs
- swift reduce
- swift (programmers)
- Swift final
- Class
- RTCCameraVideoCapturer
- Swift joined()
- Combine: Asynchronous Programming with Swift
- iOS error
- swift 고차함수
- Swift inout
- swift protocol
- Swift 내림차순
- Swift 프로그래머스
- Swift 프로퍼티
- removeLast()
- Swift 알고리즘
- CS 네트워크
- Swift ModernRIBs
- RIBs tutorial
- 2023년 회고
- Swift joined
- Swift Error Handling
- ios
- Swift Leetcode
- swift property
- Swift init
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함