강의

멘토링

로드맵

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

최찬규님의 프로필 이미지
최찬규

작성한 질문수

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

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

FGCObject 대신에 스마트포인터가 사용이 가능할까요?

작성

·

187

·

수정됨

0

안녕하세요 교수님 질문이 있습니다.

일반 클래스에서 언리얼 오브젝트를 멤버 변수로 가지고 있을 경우 언리얼 오브젝트를 가비지 컬렉터가 관리할 수 있도록 하기 위해서 FGCObject를 상속받아 함수를 구현하는 것으로 알고 있습니다.

 

혹시, 언리얼에서 제공하는 스마트 포인터 TSharedPtr나TWeakObjectPtr을 사용하여 언리얼 오브젝트를 관리할 경우에는 FGCObject를 상속받지 않고도 문제가 없을까요?

퀴즈

순차적 데이터 저장, 빠른 끝 요소 추가/접근에 장점이 있지만 중간 요소 삽입/삭제 비용이 높은 언리얼 컨테이너는 무엇일까요?

TSet

TMap

TMultimap

TArray

답변 2

0

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

언리얼 오브젝트는 별도로 구축된 언리얼 런타임의 가비지컬렉터에 의해 관리됩니다. 스마트 포인터를 쓰는 것과는 동작방식이 다릅니다.

0

안녕하세요, 인프런 AI 인턴입니다. 최찬규님.

스마트 포인터를 사용하지 않고 FGCObject를 사용하는 이유는 언리얼 오브젝트의 가비지 컬렉션 관리와 관련이 있습니다. 이와 관련된 내용에 대한 추가적인 정보를 찾을 수 있는 기존 답변들은 아래와 같습니다:

1. 스마트 포인터와 FGCObject 클래스 사용에 대한 차이점

이 질문에서는 스마트 포인터와 FGCObject 클래스를 사용하는 방법의 차이점에 대해 다룹니다. 관련한 설명이 있으니 참고하시기 바랍니다.

2. 언리얼 오브젝트 메모리 관리에 대해 질문 있습니다.

여기서는 일반 클래스에서 언리얼 오브젝트를 관리할 때 FGCObject를 상속받아 관리하는 방법과, 이러한 방식으로 메모리가 언제 해제되는지에 대해 설명하고 있습니다.

핵심 요약

  1. 언리얼 오브젝트 관리: 언리얼 엔진에서 오브젝트를 가리키고 있는 C++ 클래스에서 가비지 컬렉션을 제대로 관리하기 위해서는 대개 FGCObject를 상속받습니다.
  2. 스마트 포인터 사용: 언리얼에는 TSharedPtr, TWeakPtr와 같은 스마트 포인터가 있습니다. 그러나 이들 스마트 포인터는 C++ 표준 스마트 포인터와 다르게 동작할 수 있으며, 언리얼 가비지 컬렉터가 이를 완전히 인식하지 않을 수 있습니다.

따라서, 언리얼 오브젝트를 포함하는 클래스에서는 여전히 FGCObject를 상속받아 필요 시 적절히 가비지 컬렉션 메커니즘에 연결해 주어야 합니다.

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

최찬규님의 프로필 이미지
최찬규

작성한 질문수

질문하기