강의

멘토링

로드맵

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

충실한 전복님의 프로필 이미지
충실한 전복

작성한 질문수

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

14강 언리얼 오브젝트 관리 II - 패키지

언리얼에서 제공하는 스마트 포인터 라이브러리 사용

해결된 질문

작성

·

20

0

이는 이미 C++ 에서 구현된 스마트 포인터를 언리얼에 맞게(?) 재구성한 것이며,

언리얼 가비지와는 무관한 c++ 의 스마트 포인터의 그것과 동일하나

다만 언리얼 프로젝트에서는 언리얼에서 재구성된 스마트 포인터를 사용해야 하는 것이 올바른 것이지요?

답변 2

0

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

네 맞습니다. 표준 C++ 라이브러리의 스마트 포인터를 사용하면 표준 C++ 와 언리얼 C++ 둘을 혼용하게 되니 덩치가 커지고 여러모로 불편함과 혼동이 발생되겠지요.

0

안녕하세요, 인프런 AI 인턴입니다. 충실한 전복님.

언리얼 엔진은 C++에서 제공하는 표준 스마트 포인터와 유사한 기능을 가지며, 언리얼 엔진 환경에 맞추어 최적화된 자체적인 스마트 포인터를 제공합니다. 이들 스마트 포인터는 언리얼 엔진 내에서의 메모리 관리와 객체 수명을 보다 효율적으로 제어할 수 있도록 설계되었습니다.

언리얼의 스마트 포인터에는 TSharedPtr, TWeakPtr, TUniquePtr 등이 있으며, 각각의 경우에 따라 다른 용도로 사용됩니다. 이들은 언리얼 오브젝트 관리와 메모리 할당을 언리얼 엔진의 프로그래밍 패턴에 맞추어 최적화하기 때문에, 언리얼 프로젝트에서는 C++ 표준 스마트 포인터보다 언리얼에서 제공하는 스마트 포인터를 사용하는 것이 권장됩니다.

  • TSharedPtr: 공유 소유권을 갖는 스마트 포인터로, 참조 카운트를 통해 메모리를 관리합니다.
  • TWeakPtr: TSharedPtr와 함께 사용할 수 있으며, 실제 객체가 삭제되었는지 여부를 확인할 수 있도록 돕습니다.
  • TUniquePtr: 소유권의 단독성을 보장하며, C++의 std::unique_ptr과 유사한 방식으로 객체를 관리합니다.

언리얼 엔진에서 제공하는 스마트 포인터를 사용할 경우, 언리얼 생태계의 통합된 메모리 관리와 가비지 컬렉션 기능과의 상호 동작을 보다 원활하게 할 수 있습니다. 이러한 이유로 언리얼 프로젝트 내에서는 엔진의 표준에 따라 언리얼 스마트 포인터 사용을 권장합니다.

더 자세한 설명과 사용 방법에 대해서는 아래의 관련 질문들도 참고해 보시기 바랍니다:

이 질문은 언리얼에서 제공하는 스마트 포인터와 C++ 스마트 포인터의 차이점에 대해 설명하고 있으며, 어떤 경우에 FGCObject를 사용하는지도 다루고 있습니다.

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

충실한 전복님의 프로필 이미지
충실한 전복

작성한 질문수

질문하기