인프런 커뮤니티 질문&답변
벡터 동적할당에 대해서
작성
·
181
0
안녕하세요 여쭈어볼 게 있습니다!
이동하거나 회전할 때 Vector 를 사용하지 않습니까?
그런데 업데이트 함수에서 매초 마다 new 로 동적할당하는 것은 Heap에 그만큼 엄청난 과부하를 준다고 생각이 듭니다.
c#은 수동적으로 메모리 관리를 할 수 없으니 사용자가
강제로 삭제를 할 경우 오히려 성능에 악영향을 준다고 알고 있습니다. 그래서 그냥 가비지 컬렉터가 삭제를 알아서 하게 내버려 둬야 한다고 그러더군요.
그래서 굳이 왜 매번 new로 저렇게 해줘도 성능에 아무런 지장이 없을까? 저 방법 말고 임의 고정 값을 스택에 할당하고 그걸 활용하는 것이 성능 향상에 엄청 낫지 않을까?
이렇게 생각이 들기도 합니다.
궁금증을 꼭 풀고 싶습니다 감사합니다!
퀴즈
56%나 틀려요. 한번 도전해보세요!
게임 오브젝트의 이동 계산 시 Time.deltaTime 값을 곱해주는 주된 이유는 무엇일까요?
캐릭터의 최대 이동 속도를 제한하기 위해
모든 컴퓨터에서 초당 이동 거리를 일정하게 유지하기 위해
물리 엔진 계산의 정확도를 높이기 위해
오브젝트의 회전 상태에 따라 이동 방향을 결정하기 위해
답변 1
1
Rookiss
지식공유자
C#에서는 new를 한다고 꼭 Heap에 가진 않습니다.
Vector는 struct이기 때문에 복사 타입이고,
문법만 new를 사용하지 실제로는 stack에 올라갑니다.
그와는 별개로, class라 가정하면 멤버 변수나 어딘가에가
1번만 만들고 재사용해도 당연히 괜찮습니다.





