Intro) 참조 타입과 Heap

물론 다들 ARC까지 공부를 진행해왔다면~ 메모리에 대한 이해가 어느 정도 있겠지만 인간은 망각의 동물이기 때문에 다같이 우리 한번 참조타입과 Heap에 대해서만 보고 가볼까요?

Heap

사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역

Reference Type

heap 메모리 영역실제 인스턴스가 저장되고, stack 메모리 영역에 heap 영역에 있는 실제 인스턴스의 메모리 주소만 가지고 있다

→ 클래스와 클로저가 참조타입의 대표적인 예시이다.

아래의 클래스가 메모리에 어떻게 저장되는지 같이 알아보자!

class SoptMemberClass {
		var part: String
		var name: String

		init(part: String, name: String) {
				self.part = part
				self.name = name
		}
}

var hidi: SoptMemberClass = SoptMemberClass(part: "아요", name: "류희재")

아래 그림처럼 Class는 Data 영역에 추가되고, hidi라는 실제 인스턴스는 Heap영역에 할당된다. 그리고 Stack 메모리에 있는 hidi의 주소값만 가지고 있다.

Untitled

참조타입은 새로운 값이 할당되지 않고 똑같이 heap 메모리 영역에 생성된 인스턴스 메모리의 주소를 복사한다!

⇒ shared instance를 생성하여 같은 인스턴스를 바라보는 참조값을 생성

⭐️ ARC를 위한 INTRO 쇽샥 ⭐️