RAII (Resource Acquisition Is Initialization) 패턴을 활용해 구현됨.
C++에서 자주 쓰이는 방법으로 자원의 안전한 사용을 위해서 고안된 기법
스코프를 벗어나게 되면 소멸자가 호출되는 것을 이용하여 메모리를 해제해 주는 기법
약한 포인터 (weak_ptr)
#include <memory>
#include "Person.h"
int main()
{
std::shared_ptr<Person> owner = std::make_shared<Person>("Reoul");
std::weak_ptr<Person> weakOwner = owner;
std::shared_ptr<Person> lockedOwner = weakOwner.lock();
return 0;
}
<aside> 💡 약한 참조
공유 포인터 (shared_ptr)
int main()
{
std::shared_ptr<Vector> vector = std::make_shared<Vector>(10.f, 30.f);
std::shared_ptr<Vector> copiedVector = vector; // 포인터의 소유권을 공유한다
}
유일 포인터 (unique_ptr)
unique_ptr
가 범위를 벗어날 때, 포인터가 지워짐(delete)#include <memory>
int main()
{
std::unique_ptr<int[]> myArray1(new int[](40)); // C++11
std::unique_ptr<int[]> myArray2 = std::make_unique<int[]>(40); // C++14 이후
}