언리얼 엔진에서 유니크 포인터(Unique Pointer)는 메모리 관리를 위한 스마트 포인터 중 하나로, 객체의 소유권을 명확하게 관리할 수 있도록 도와줍니다. 유니크 포인터는 한 번에 하나의 객체만 소유할 수 있으며, 소유권이 다른 유니크 포인터로 이동할 수 있습니다. 이를 통해 메모리 누수를 방지하고, 객체의 생명 주기를 쉽게 관리할 수 있습니다.
유니크 포인터의 주요 특징
소유권: 유니크 포인터는 객체에 대한 유일한 소유권을 가집니다.
자동 메모리 해제: 유니크 포인터가 범위를 벗어나면 자동으로 메모리가 해제됩니다.
이동 세맨틱: 유니크 포인터는 소유권을 다른 유니크 포인터로 이동할 수 있습니다.
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
UCLASS()
class MYPROJECT_API AMyActor : public AActor
{
GENERATED_BODY()
public:
AMyActor();
protected:
virtual void BeginPlay() override;
private:
// 유니크 포인터를 사용하여 MyObject를 소유
TUniquePtr<class UMyObject> MyObject;
};
// MyActor.cpp
#include "MyActor.h"
#include "MyObject.h"
AMyActor::AMyActor()
{
// 유니크 포인터로 객체 생성
MyObject = MakeUnique<UMyObject>();
}
void AMyActor::BeginPlay()
{
Super::BeginPlay();
// MyObject 사용
if (MyObject)
{
MyObject->DoSomething();
}
}