-
[Swift] struct 는 왜 메모리릭 걱정을 안해도 되는걸까?Swift 2023. 1. 26. 13:58
코드를 치다 문득 내가 왜 class 에서만 weak self 를 해주고 있지?
일종의 게슈탈트 붕괴를 겪게 되었다.
그래서 다시 공부해보자 ~!
우선 1차적으로 class 와 struct 이 저장되는 메모리 영역이 다르다
struct -> Stack 혹은 Heap
class -> Heap
에 저장됩니다.
경우에 따라 struct 또한 Heap 에 저장됩니다.
Heap 에 저장될 경우 관리 대상이 됩니다.
바로 ARC 이죠. 기본적으로 class 는 참조 타입이기에 만약 더 이상 참조하고 있지 않은 인스턴스라면 메모리에서 내려주어야 합니다.
그것을 자동으로 해주는 것이 ARC 라는 시스템이죠.
만약 struct 의 인스턴스가 class 인스턴스의 property 로 존재할 경우 Heap에 저장될 것입니다.
이러한 경우를 제외한다면 struct 인스턴스는 기본적으로는 stack 에 저장될 것이고 만들어서 쓰고 바로바로 버리게 됩니다.
다시 정리 ->
참조값이 아니기 때문에 카운트를 하지 않고 복사해서 만들었다가 한번쓰고 바로 메모리에서 내려버리는 것입니다.
그렇기 때문에 메모리릭을 걱정할일이 없는 것이죠.
왜냐? 어차피 바로바로 사라질 메모리이기 때문입니다.
ARC doesn't apply to struct and enum, how are they deallocated in Swift
Since ARC doesn't apply to struct and enum, then how are they deallocated from the memory? I have to get stuck when it asked in the interviews and try to find the correct answer but can't find much...
stackoverflow.com
iOS :: Swift 메모리의 Stack과 Heap 영역 톺아보기
안녕하세요! 상어입니다. 최근에 공부를 하면서 이 부분에 대해서는 꼭 블로그에 써야겠다라는 생각이 들었는데 그건 바로 Stack과 Heap입니다! 아마 많은 분들이 해당 부분에 대해서는 학교에서
shark-sea.kr
'Swift' 카테고리의 다른 글
[Xcode] Scheme 이름 가지고 오기 (0) 2023.03.06 [Swift] 왜 struct 는 deinit 을 지원하지 않는 것일까? (2) 2023.02.04 [Swift] CodingKeys 작성, 이제 제발 그만하자 - JSONDecoder, keyDecodingStrategy (0) 2023.01.15 [Combine] 시간차를 두고 값을 내보내주자 - debounce (0) 2023.01.14 [Combine] Publishers 를 합쳐서 한번에 처리해주자 - combineLatest (4) 2023.01.13