10.02 - TIL

김혁·2025년 10월 2일

TIL

목록 보기
31/84

오늘의 코드카타

오늘의 공부

팀 프로젝트 진행 내용

1. 엔딩 시퀀스 제작



오늘의 CS

언리얼의 스마트 포인터

  • UObject 기반 객체를 위한 스마트 포인터
    • 가비지 컬렉션(GC) 시스템에 의해 생명주기가 관리됨
  • 일반 C++ 객체를 위한 스마트 포인터 (Non-UObject)
    • C++ 표준 라이브러리의 스마트 포인터와 유사


UObject 기반 객체를 위한 스마트 포인터

  • GC 시스템에 의해 생명주기가 관리되고, 이를 통해 메모리 누수나 댕글링 포인터 문제를 방지
참조 타입역할특징
UPROPERTY()강한 참조가장 일반적인 UObject 참조 방식, 해당 매크로가 붙은 raw 포인터는 GC에게 객체가 사용 중이라고 알려주는 강한 참조
TObjectPtr강한 참조raw 포인터를 대체하며 안전성과 성능을 향상시킨 버전, UPROPERTY()와 함께 사용되어 강한 참조의 역할
TWeakObjectPtr약한 참조GC에 의해 추적되지만, 객체의 메모리 회수를 방해하지 않음, GC가 객체를 삭제하면 이 포인터는 nullptr로 설정됨
TSoftObjectPtr소프트 참조에셋의 주소(경로)만 가지고 있으며, 현재 메모리에 로드되어 있는지 여부와 상관없이 참조를 유지할 수 있음, 필요할 때 명시적으로 로드하는 방식(비동기 로딩)으로 메모리 최적화에 사용됨
TSoftClassPtr소프트 클래스 참조클래스 타입에 대한 소프트 참조, 실제 클래스가 아닌 클래스의 경로를 참조하며, 필요할 때 로드하여 UClass*로 사용할 수 있음

일반 C++ 객체를 위한 스마트 포인터 (Non-UObject)

  • 참조 카운팅 메커니즘을 사용하여 메모리 수명을 관리함
  • UObject를 상속받지 않는 일반적인 C++ 클래스나 구조체의 동적 할당 메모리를 관리하는 데 사용
스마트 포인터역할특징C++ 표준 대응
TSharedPtr공유 소유권여러 포인터가 동일한 객체를 공유, 참조 카운트가 0이 될 때 메모리를 해제, 순환 참조 발생 위험std::shared_ptr
TSharedRef공유 필수 참조TSharedPtr와 동일하게 작동, 절대 nullptr이 될 수 없는 참조, 객체가 항상 존재함을 보장대응하는 표준 없음
TWeakPtr약한 참조TSharedPtr로 관리되는 객체를 참조하며, 참조 카운트를 증가시키지 않음, 순환 참조를 끊는 용도로 사용됨 ( Pin() 함수를 사용해서 승격해서 사용 )std::weak_ptr
TUniquePtr고유 소유권하나의 포인터만이 객체에 대한 소유권을 가짐, 소유권을 이동할 수는 있지만 복사는 불가능, 소유 포인터가 스코프를 벗어나면 자동으로 메모리 해제std::unique_ptr
profile
게임 개발자를 향해..

0개의 댓글