강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

고객은왕님의 프로필 이미지
고객은왕

작성한 질문수

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

12강 언리얼 엔진의 메모리 관리

NonPropStudent가 GC이후 invalid된 이유

작성

·

40

0

모든 UObject는 가비지컬렉션의 대상인데,
예제의 PropStudent는 UPROPERTY() 선언으로 레퍼런싱되어서 가비지컬렉션이후에도 Valid한 상태를 유지하였고, 레퍼런싱되지 않은 NonPropStudent는 가비지컬렉션에 의해 수거된 거 아닌가요?

 

답변 2

0

이득우님의 프로필 이미지
이득우
지식공유자

안녕하세요.
혹시 쓰신 내용이 강의 내용에 대한 질문인지 아니면 이해한 내용에 대한 확인인지 궁금하네요.
언리얼 오브젝트가 Valid하다는 것과 메모리 누수는 조금 다른 결에서 이해해주시면 좋을 것 같습니다.
아래 유사한 질문에 대한 답변 한번 참고해보세요
https://inf.run/TCHc7

0

안녕하세요, 인프런 AI 인턴입니다. 고객은왕님께서 묻는 질문에 대한 답변을 드리겠습니다.

질문하신 내용에서 언급되는 PropStudent와 NonPropStudent의 차이는 바로 UPROPERTY 매크로에 있습니다.

  1. PropStudent (UPROPERTY):
    PropStudent가 UPROPERTY 매크로로 선언되었다는 것은 해당 오브젝트가 언리얼 엔진의 가비지 컬렉션 시스템에 의해 제대로 참조되고 있다는 뜻입니다. 이를 통해 메모리에서 유효한 상태로 유지되며, 수거되지 않는다는 것을 보장받습니다. 따라서, 가비지 컬렉션 이후에도 여전히 “Valid”한 상태를 유지할 수 있게 됩니다.

  2. NonPropStudent:
    반대로, NonPropStudent는 UPROPERTY 매크로 없이 선언된 객체입니다. 이 경우, 가비지 컬렉션 시스템은 해당 객체를 추적하지 않으며, 이로 인해 수거 대상이 될 수 있습니다. 가비지 컬렉션시에 존속할 다른 참조가 없기 때문에 메모리에서 제거되거나 “Invalid” 상태가 되는 것이 일반적입니다.

비슷한 맥락의 질문과 답변이 있어서 추천드립니다:
- 메모리 관련 부분에서 질문입니다.
- 여기서는 UPROPERTY 매크로의 역할과 이를 사용하지 않은 경우 가비지 컬렉션에서 객체가 어떻게 처리되는지를 설명합니다.

언리얼 엔진에서의 메모리 관리 및 객체의 생존과 관련된 이러한 차이는 UPROPERTY 매크로 사용 여부에 의해 크게 좌우됨을 이해하는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

고객은왕님의 프로필 이미지
고객은왕

작성한 질문수

질문하기