본문 바로가기
Unreal

[Unreal] 값,참조,포인터/ 인스턴스 / 구조체 vs 클래스

by imagineer_jinny 2024. 4. 5.

값 vs 참조 vs 포인터

데이터를 어떻게 저장, 전달, 관리할지 결정

 

값(Value)

데이터의 실제 내용

ex. 숫자 10이나 문자 'A'는 모두 값

 

참조(Reference) vs 포인터(Pointer)

둘 다 메모리의 주소 가리킴

 

차이점은 안전한지(레퍼런스), 안 안전한지(포인터)

 

레퍼런스는 별명을 붙여주는것이기 때문에 null 안되고, 초깃값이 반드시 있어야함. 한번 별명 붙여주면 초기화도 안됨

포인터는 언제 어디서든 초기화가 가능함

 

 

인스턴스

인스턴스(Instance)

(힙)메모리에 로딩된 상태

 

원래 코드(클래스)로 있다가, 메모리에 로딩되기 시작하면 그게 인스턴스!

 

 

인스턴스는 속성과 메서드를 포함함

메모리에 할당되어 실행시간(Runtime에 사용)

 

ㄴ Unreal Engine 5에서는 대부분의 객체 인스턴스가 힙 메모리에 할당됨

UE5는 객체의 생명주기를 관리하기 위해 자체적인 가비지 컬렉션(Garbage Collection) 시스템을 사용

가비지 컬렉터는 더 이상 참조되지 않는 객체를 자동으로 찾아 메모리를 해제하는데, 이는 개발자가 복잡한 게임 로직을 구현하는 동안 메모리 관리 부담을 줄여줌

 

  • 값과 참조: 이 두 개념의 차이는 데이터를 어떻게 전달하고 접근하는가에 있습니다. 값은 데이터의 실제 내용을 복사하는 반면, 참조는 데이터의 위치(주소)를 가리킴
  • 값/참조와 인스턴스: 값과 참조는 데이터를 어떻게 저장하고 전달하는지에 대한 방법을 설명하는 반면, 인스턴스는 데이터 구조의 실체, 즉 메모리에 할당된 객체를 의미함
  • 인스턴스는 참조를 통해 접근될 수 있으며, 때로는 값으로서의 특성(복사될 때)을 가질 수도 있음(예: 구조체)

 

참고

언리얼의 게임 인스턴스는 '언리얼에서정의한 클래스'임.

우리가 생각하는 인스턴스와는 다른 개념임.

게임 인스턴스는 게임의 시작과 끝까지 절대 해제되지 않는 인스턴스

 

구조체 vs 클래스

구조체

주로 관련 데이터를 그룹화할 때 사용  ex.벡터

 

클래스

데이터와 데이터에 작용하는 함수(메서드)를 묶어놓은 '틀'

그래서 상속이란 개념이 있음

 

 

댓글