inflearn logo
강의

講義

知識共有

ゲインウのアンリアルプログラミング Part1 - アンリアルC++の理解

14強アンリアルオブジェクト管理II - パッケージ

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

解決済みの質問

75

devyh87

投稿した質問数 17

0

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

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

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

unreal-engine 언리얼-c++

回答 2

0

ideugu

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

0

communityai8509

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

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

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

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

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

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

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

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

저는 저 노란색 미리보기 창이 안뜹니다

0

21

1

강의중에 사용하는 ppt 수업 자료

0

37

1

GetName(), SetName() 함수의 오버로딩 관련 문제 문의드립니다.

0

40

1

언리얼 공부 방법에 대해서 질문드립니다.

0

72

1

컴포지션을 위한 컴포넌트 생성에 관해 질문드립니다.

0

82

2

if (NameProp) 은 if (NameProp != nullptr)이랑 같은 의미인가요?

0

96

2

언리얼 계정 로그인 불가 문제

0

117

2

가비지컬렉션 주기를 짧게 유지하면 어떤 이슈가있을까요?

0

75

2

11강 TArray TSet 에 대해서 질문있습니다.

0

72

1

Unreal 연동 후 Visual Studio 빌드오류 제발 살려주십쇼

0

366

3

FGCObject 상속 받은 객체에서 Uobject 삭제를 원할 때

0

80

2

게임 내 인벤토리 데이터를 관리 할 경우, TArray / TSet 무엇이 올바를까요?

0

74

2

8강 컴포지션 중 궁금한 것이 있습니다.

0

56

2

헤더 파일 분리 방법

0

84

2

언리얼 엔진 깃 설치

0

88

2

FObjectInitializer 를 사용한 생성자.

0

96

2

언리얼엔진 에서 새로운 클래스를 생성하면

0

75

2

GetName이 이미있는데용?

0

113

2

TObjectPtr 과 일반 포인터에 대한 용도 질문

0

105

2

UPROPERTY() 다음 라인에서 세미콜론이 입력되지 않습니다.

0

164

1

[18:50] 패키지 저장 시 이미 패키지가 있으면 로딩을 다 하고 저장하는 것이 좋은 이유가 궁금합니다

0

140

2

NonPropStudent가 GC이후 invalid된 이유

0

78

2

[44:22] 커스텀 구조체에서 GetTypeHash() 와 operator== 를 오버로딩 하는 이유에 대한 질문

0

108

2

문제풀이 오류 질문

0

94

2