UObject을 상속 받지 않은 커스텀 클래스는 TSharedPtr나 TWeakPtr을 사용해서 개체의 참조가 0이 될때 메모리을 해지하는 방법으로 메모리을 관리한다.
class PlayerCharacter {};
TSharedPtr<PlayerCharacter> PlayerChar (new PlayerCharacter());
TWeakPtr<PlayerCharacter> PlayerChar (new PlayerCharacter());
TSharedPtr은 공유 포인터이고 TWeakPtr은 약한 포인터이다.
참조 카운트가 0이 되어도 개체의 메모리을 해지 안되게 하는 기능의 유무 차이
TSharedPtr - 참조 카운트가 0이 되어도 메모리에 개체을 계속 유지시키는 옵션 기능이 있다.
TWeakPtr - 참조 카운트가 0이 되어도 메모리에 개체을 계속 유지시켜주는 옵션 기능이 없다.
스레드로 부터 안정성 유무 차이
TSharedPtr - 스레드로 부터 안전하다. 따라서 별도의 스레드로가 이 포인터을 안전하게 조작할 수 있다는 의미이다.
TWeakPtr - 스레드로 부터 안전하지 않다.
UObject을 상속받은 클래스들은 TSharedPtr나 TWeakPtr을 사용할 수 없고 커스텀 클래스들만 사용 가능하다.
'Unreal' 카테고리의 다른 글
Unreal의 콘솔(Console) 명령어 보기 (0) | 2023.06.21 |
---|---|
Static Mesh의 LOD 설정 (0) | 2023.06.21 |
UObject을 상속 받는 것들에 대한 메모리 관리 (0) | 2022.12.19 |
UE4와 UE5의 개발 정보들 (0) | 2022.12.07 |
언리얼에서 UKismetStringLibrary을 이용하여 여러 타입의 변수들을 문자열로 변환하기 (0) | 2022.12.07 |