<aside> 💡
</aside>
Smart Pointer – 추가기능을 가진 포인터다.
● 일반적인 포인터에 비해 좋은점 몇가지 가지고 있음
● 포인터를 우리가 잡는다는 것은 메모리를 잡는 것.
우리가 코드를 작성하며 동적으로 메모리를 할당할 때, 이를 잊어버릴 수 있다
⇒ memory leak인 상황 이런걸 막기 위해 Smart Pointer를 사용한다.
순환 참조
std::shared_ptr<MyClass> sharedPtr1 = std::make_shared<MyClass>();
std::shared_ptr<MyClass> sharedPtr2 = std::make_shared<MyClass>();
// sharedPtr1과 sharedPtr2가 서로를 가리키게 됨 (순환 참조)
sharedPtr1->member = sharedPtr2;
sharedPtr2->member = sharedPtr1;
Weak Pointer
// Weak pointer를 사용하여 순환 참조 방지
std::weak_ptr<MyClass> weakPtr1 = sharedPtr1;
std::weak_ptr<MyClass> weakPtr2 = sharedPtr2;
Unique Pointer
A라는 unique_ptr에서 B라는 unique_ptr로 이동한다면, A는 더 이상 객체를 소유하지 않음
**std::unique_ptr<Resource> ptr1(new Resource());
std::unique_ptr<Resource> ptr2;
ptrB = std::move(ptrA);**