TIL

[TIL] 내일배움캠프_Unity 최종 프로젝트 3주차: 주요 메카닉 구현 10, 기술 면접 대비 16일차

Hwone 2023. 11. 9. 00:10

팀 회의 내용

- GameScene 구조물 배치 

- 주요 메카닉 완성도 높이기

- 추가 기능 역할 분담

- 통합 테스트 및 버그픽스 

 

구현한 내용 

- 버그픽스 

 

오늘로 주요메카닉 구현 끝 !! 

이번에 특별한 버그가 하나 발생하였다 싱글턴화 되어있는 GameManager에서 두 개 이상의 객체가 서로를 참조하는 순환 참조가 일어나서 계속해서 GameManager가 생성되어 메모리 릭 에러가 발생했었다 이를 해결하기 위해 순환 참조 하는 부분을 없애고 싱글턴화 되어있는 Manager 들은 Awake에서 초기화 하지 않고 start에서 초기화 해주도록 변경하였다 

 

기술 면접 대비 16일차 

Q: 스택, 힙 메모리란 무엇이며 어떤 차이가 있는지 비교해서 설명해주세요

 

A :스택은 정적 메모리를 저장하고, 정의된 스코프를 벗어나면 자동으로 소멸합니다 

힙은 동적 메모리를 저장하고, 가비지 컬렉터가 없으면 사용자가 직접 메모리를 관리해야 합니다 

 

* 스택은 할당과 해제가 빠르지만 메모리 크기 제한이 있고 힙은 메모리 크기 제한이 없지만 스택에 비해 상대적으로 느리고 운영체제마다 메모리 관리가 다르기 때문에 어렵다 

 

* 메모리 구조 

1. 코드 영역 : 실행할 프로그램의 코드 

2. 데이터 영역 : 전역 변수, 정적 변수 (프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸) 

3. 힙 영역 : 사용자의 동적 할당 

4. 스택 영역 : 지역 변수 매개변수 

 

* 오버플로우 : 한정된 메모리 공간이 부족하여 메모리 안에 있는 데이터가넘쳐 흐르는 현상 

힙은 메모리 위쪽 주소부터 할당되고, 스택은 메모리 아래쪽 주소부터 할당되어 각 영역이 상대 공간을 침범하는 일이 발생할 수 있는데 힙이 스택을 침범하면 힙 오버 플로우, 스택이 힙을 침범하는 경우를 스택오버플로우 라고 한다 

 

Q : 값 형식과 참조 형식의 차이에 대해 설명해주세요 

 

A : 값형식은 변수가 값을 담는 데이터 형식으로 스택 메모리 영역에 저장되고, 변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터 형식으로 힙 메모리 영역에 저장된다