TSharedPtr 4

[언리얼 C++] 쉐어드 레퍼런스 사용법

쉐어드 레퍼런스는 엔진 시스템 외부의 데이터 개체에 대해 null이 불가능한 스마트 포인터입니다. 즉, 쉐어드 레퍼런스를 재설정하거나 null 개체를 할당하거나 빈 참조를 만들 수 없다는 뜻입니다. 따라서 쉐어드 레퍼런스에는 항상 유효한 개체가 포함되어 있습니다. 쉐어드 레퍼런스와 쉐어드 포인터 중 하나를 선택할때 빈 개체나 null이 가능한 개체가 필요하지 않는 한 쉐어드 레퍼런스가 기본 옵션입니다. 비어 있거나 null이 가능한 참조가 필요한 경우 쉐어드 포인터를 사용해야 합니다. 1. 선언 및 초기화 // Create a shared reference to a new node TSharedRef NewReference = MakeShared(); 쉐어드 레퍼런스를 선언할때는 항상 유효한 데이터 개체..

[언리얼 C++] 쉐어드 포인터 사용법

쉐어드 포인터는 기본적으로 메모리 누수를 방지하고 초기화되지 않은 메모리에 대한 포인터를 방지한다는 점에서 기본 스마트 포인터의 모든 이점을 포함하고 있으며 다음과 같은 추가 기능들도 제공합니다. 공유 소유권 : 여러 쉐어드 포인터가 참조하는 데이터 개체는 참조 카운트가 0이 되지 않는 한 소멸되지 않습니다. 자동 무효화 : 댕글링 포인터에 대한 걱정없이 안전하게 참조할 수 있습니다. 약한 참조 : 위크 포인터는 참조 주기를 깰 수 있습니다. 의도의 표시 : 소유자를 관찰자와 구별하고 무효화할 수 없는 참조를 제공합니다. 쉐어드 포인터에는 주목할 만한 몇가지 기본 특성이 존재합니다. 매우 견고한 신택스 비간섭 스레드 안전 좋은 성능, 메모리 관리 쉐어드 포인터에는 위와 같은 기능들과 특징이 존재하기 때문..

[언리얼 C++] 스마트 포인터 라이브러리 (2)

언리얼 스마트 포인터 라이브러리에 대한 기본 설명은 [언리얼 C++] 스마트 포인터 라이브러리 (1) (tistory.com) 글을 참고하시기 바랍니다. 이 글에서는 스마트 포인터 라이브러리의 부가적인 기능들에 대해 알아보겠습니다. 1. 헬퍼 클래스와 함수 언리얼 스마트 포인터 라이브러리는 스마트 포인터를 보다 쉽고 직관적으로 사용할 수 있도록 다양한 헬퍼 클래스와 함수를 제공합니다. 헬퍼 클래스 설명 TSharedFromThis TSharedFromThis에서 클래스를 파생시키면 AsShared 혹은 SharedThis 함수가 추가됩니다. 이러한 함수들을 통해 오브젝트에 대한 TSharedRef를 구할 수 있습니다. 헬퍼 함수 설명 MakeShared 및 MakeShareable 일반 C++포인터로 쉐..

[언리얼 C++] 스마트 포인터 라이브러리 (1)

언리얼 스마트 포인터 라이브러리는 메모리 할당과 추적의 부담을 해소해주도록 설계된 C++11 스마트 포인터들의 커스텀 구현입니다. 이 구현에는 업계 표준인 쉐어드 포인터, 위크 포인터 그리고 유니크 포인터가 포함되어 있습니다. 또한 null이 불가능한 쉐어드 포인터와 같은 역할을 하는 쉐어드 레퍼런스도 추가되었습니다. 단, 언리얼 오브젝트는 게임 코드에 더 최적화된 별도의 메모리 추적 시스템을 사용하기 때문에 이러한 클래스들은 UObject 시스템과 사용할 수 없습니다. 1. 스마트 포인터 타입 스마트 포인터 타입 설명 Shared Pointers(TSharedPtr) 쉐어드 포인터는 참조하는 오브젝트를 소유하며, 무기한으로 오브젝트의 소멸을 방지하고, 참조하는 쉐어드 포인터 또는 쉐어드 레퍼런스가 없을..