Q: Unity Boxing과 UnBoxing에 대해 설명해 보아라
A: Boxing은 Stack 메모리의 Data를 Heap 메모리에 할당을 하는 방식이다.
Object a = value일 때 Heap 영역에 value 값이 할당되고, a는 그 값의 주소를 참조한다.
반대로 이렇게 Heap 영역에 할당된 Value를 Stack 메모리에 할당을 해야 하는 경우도 있다.
위 Object a에 대해 int b = (int)a 와 같이 값을 할당하는 것이 UnBoxing이다.
즉 Boxing은 Stack의 값을 Heap에 할당하는 방식이고, UnBoxing은 Heap에 할당된 값을 Stack에 할당하는 방식이다.
단 이 방법의 단점은 Boxing한 메모리와 UnBoxing 한 메모리. 두 개의 메모리가 발생하기에 가비지가 발생한다는 점.
그리고 Value를 Boxing은 일반 할당보다 최대 20배, UnBoxing은 Casting 과정보다 최대 4배의 시간이 더 걸릴 수 있다.
이러한 단점에도 간간히 사용되는 이유는 그 편리성 때문이다.
주로 ArrayList, Hash Table이 대표적인 예이다.
'메모장 > 기술면접' 카테고리의 다른 글
C++ malloc/free와 new/delete의 차이점 (0) | 2020.08.28 |
---|---|
C++ Override 시 Virtual Keyword를 써야 하는 이유 (0) | 2020.08.28 |
UE4 Actor의 Role과 Remote Role (0) | 2020.08.10 |
UE4 Replicate 방식간 차이 (0) | 2020.08.10 |
내적의 의미 (0) | 2020.08.10 |