본문 바로가기

CS/Computer Basic13

[CS/Basic] 예시 코드와 함께 살펴보는 ARC 메모리 관리 과정 지난 포스팅에 이어.. 편리하고 유용한 메모리 관리 모델인 ARC(Automatic Reference Counting)의 작동 과정을 예시코드와 함께 알아보도록 하겠습니다. ARC의 이해를 위한 예시 코드 ARC는 Reference Count의 증가와 감소를 통해 메모리를 관리, 해제하는 모델 ARC의 작동 과정을 살펴보기 위해, 아래와 같은 예시 코드를 활용하도록 하겠습니다. Animals란 클래스가 있습니다. 이름(name) 프로퍼티를 담고 있습니다. 또한, RC의 증가와 감소, 해제를 확인하기 위해 init 및 deinit 메서드를 포함합니다. class Animals { var name: String init(name: String) { self.name = name print("\(name)이 .. 2023. 3. 17.
[CS/Basic] 메모리 관리의 시작, ARC(Automatic Reference Counting) Heap과 Stack에 대해 어느정도 이해가 되셨다고 하신다면.. 이번 포스팅에서는 Swift에서 어떻게 메모리를 관리를 하는지 살펴보고자 합니다. 면접 단골 질문 중 하나인, ARC(Automatic Reference Counting)에 대해 알아보기에 앞서 RC란 무엇이고, (ARC의 구체적인 메모리 관리 과정은 다음 포스팅에서 이어집니다) Heap과 RC(Reference Counting)의 관계 RC란, Heap 영역에 저장되는 데이터의 효율적인 관리를 위한 일종의 '참조 카운팅' 시스템 앞선 포스팅에서 살펴본 Heap에 대해 간단하게 정리하고 넘어가자면.. 개발자, 사용자에 의해 할당하며, 해제되는 관리 가능한 영역 클래스 인스턴스(Class Instance)나 클로저와 같은 '참조타입' 값이.. 2023. 3. 16.
[CS/Basic] 메모리 영역, Heap과 Stack엔 어떤 데이터가 쌓일까? 메모리 구조의 4가지 영역 중, Heap과 Stack 영역을 조금 더 자세히 살펴보고자 합니다. 해당 두 영역의 개념을 다시 한번 상기하고, Swift 메모리 상에서 데이터가 쌓이는 과정을 알아보겠습니다! 본 포스팅의 경우, 메모리 구조와 관련된 추가적인 학습 이후 개념상 맞지 않은 부분이 있다면 지속적으로 보완 할 예정입니다. Heap 과 Stack 메모리 영역은 어떻게 할당할까? 메모리 내 저장(할당)되는 기준은 바로 Semantics! 앞서 메모리 구조에서 다룬 Heap과 Stack에 대한 내용을 되짚어 보자면.. Heap ➟ 컴파일단계에 사용자에 의해 할당/해제하는 영역 Class, Closure와 같은 참조타입이 저장 Stack ➟ 런타임 단계에서 프로그램이 자동으로 할당/해제하는 영역 함수 .. 2023. 2. 23.
[CS/Basic] 메모리 구조는 어떻게 구성되어있을까? CS나 Swift 문법 관련된 포스팅을 하면서, '객체는 클래스란 틀을 바탕으로 메모리 상에 할당되는 결과물(Object)' 'Swift의 상수와 변수, 그리고 저장 프로퍼티는 메모리 상에 저장' 위와 같이 [메모리]라는 단어를 자주 사용해 왔습니다. 그런데, 실제로 메모리는 단일한 구조가 아닌 4가지의 공간, 구조로 구성되어 있다고 하는데 말입니다.. 이번 포스팅에서는 해당 구조에 대해 살펴보는 시간을 가져볼까 합니다. (ARC와 같은 면접 단골문제와도 연관되어 있으니, 반드시 짚고 넘어가야겠지요?) 메모리란 무엇인가요? 주 기억장치인 하드웨어 RAM을 의미하며, 프로그램을 실행하기 위한 정보를 저장 컴퓨터에서 동작하는 모든 프로그램은 RAM이란 기억장치 내 고유한 영역을 할당받습니다. 즉, RAM =.. 2023. 2. 12.
[CS/Basic] 객체지향 프로그래밍의 특징과 설계원칙(SOLID) 자, 이번 포스팅은 지난번 객체지향 포스팅에서 미처 다루지 못했던 객체지향 프로그래밍의 4가지 특징 그리고 객체지향 설계 원칙(SOLID) 위 2가지 사항에 대하여 살펴볼 예정입니다. 이전에 다룬 객체지향에 대한 내용이 어렵지 않다면, 이해하고 숙지하는데 큰 어려움은 없지 않을까 하는.. 객체지향 프로그래밍의 개념 (복습!) [CS/Basic] 마침내, 객체지향 프로그래밍 (OOP, Object-Oriented Programming) 쉴새없이 달려온 프로그래밍 패러다임,, 마침내, 프로그래밍을 조금이라도 맛본 개발자들이라면 오다가다 자주 마주치는 '객제지향' 에 대해 다뤄보는 시간을 가져볼까 합니다. '객체(Object)' 란 iosdevlime.tistory.com 객체지향 프로그래밍의 4가지 특징 추.. 2023. 2. 1.
[CS/Basic] 마침내, 객체지향 프로그래밍 (OOP, Object-Oriented Programming) 쉴새없이 달려온 프로그래밍 패러다임,, 마침내, 프로그래밍을 조금이라도 맛본 개발자들이라면 오다가다 자주 마주치는 '객제지향' 에 대해 다뤄보는 시간을 가져볼까 합니다. '객체(Object)' 란 개념에 대해 미리 선행하였으나, 기억이 가물가물하다면 아래 포스팅을 참고해 주시길 바랍니다. 객체(Object)가 무엇인가요? [CS/Basic] 그래서, 객체(Object)가 무엇인가요? 프로그래밍의 패러다임 중, [목적/방식]에 따라 명령형 / 선언형 2가지 형태를 앞선 포스팅에서 살펴보았습니다. 좀 더 파고들어, 명령형에서 파생되는 절차적, 객체지향 프로그래밍을 이해하기 iosdevlime.tistory.com 객체지향 프로그래밍 패러다임의 시작 데이터의 구조화, 객체(Object)간의 상호작용을 통한 문.. 2023. 1. 25.