클래스와 구조체의 차이는 ‘참조 타입과 값타입
’까지만 답변할 수 있는 내자신에게 성장을 위한다면 더 깊게 아는것이 어떨까하여 학습하게 되었다.
해당 글은메모리의 구조
(Code, Data, Heap, Stack)에 대해 알고있는 가정 하 작성하였다.
클래스 | 구조체 | |
---|---|---|
타입 | 참조(Refrence) | 값(Value) |
인스턴스 저장(메모리) | Heap 저장 | Stack 저장 |
메모리 관리 | ARC 자동관리 | 스택 프레임 종료 시 메모리 자동 제거 |
개발 시 작성되는 모든 코드는 Code
영역에 할당
클래스의 인스턴스는 공유가 가능한 Heap
영역에 존재
참조
가 가능한 것구조체의 인스턴스는
구조체는 인스턴스 데이터를 전부 Stack
에 저장, struct자체는 Data
에 존재
클래스는 인스턴스 데이터를 Heap
에 저장, 해당 Heap 주소를 가르키는 변수는 Stack
에 저장
// Yoonds 클래스 자체는 Data영역에 존재
class Yoonds {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
/*
1. 데이터 Yoonds, 10을 Heap에 저장
2. 데이터가 저장되어있는 Heap의 메모리 주소를 yoonds 변수에 보관
3. yoonds변수는 Stack에 저장
*/
let yoonds = Yoonds(name: "Yoonds", age: 10)