new 할당을 Update에서 하면 GC가???

devKyoun·2024년 3월 12일
0

Unity

목록 보기
4/27

공부를 하다가 의문점을 맞닥뜨렸다.
무엇이냐면,, Update 안에 new 라는 생성코드가 들어가도 되는 것인가? 이다.

void Update()
{
    float inputX = Input.GetAxis("Horizontal");
    float inputZ = Input.GetAxis("Vertical");
    
    //여기
    rb.velocity = new Vector3(inputX*speed, rb.velocity.y, inputZ*speed);
}

Update는 1초당 수십프레임으로 실행이 되는 함수다.
그 1초간에 몇십번의 실행이 되는데 new 가 들어가있으면 메모리 부분에서 굉장한 타격이 가지 않을까? 라는 생각이 들었다.

그래서 한번 웹서핑을 해보았는데, 나같은 생각 하는 사람은 역시 많았다..

결론은 간단했다.

"However, when you instantiate a struct, it gets created on the stack."
유니티 공식문서

"new로 할당한다고 하더라도 구조체는 여전히 스택에 생성되는 값 타입이다. C#이 이 문법을 지원하는 이유는 통일성과 생성자 호출을 위해서이다."

출처: https://3dmpengines.tistory.com/1566 [3DMP:티스토리]

스택에 저장 되니까, Update문이 끝날때 소멸한다는 것을 알 수 있다.

Update에 저렇게 사용해도 가비지 자체가 안나온다니까 안심하고 써야겠다.

🤣🤣🤣

profile
Game Developer

0개의 댓글