본문 바로가기
728x90

스마트포인터4

unique_ptr(스마트포인터) 전세계에 딱 하나만 존재해야 하는애를 unique_ptr로 관리해야 합니다. 그래서 보통 매니저 클래스 같은걸 unique_ptr로 하는경우가 많습니다. unique_ptr은 C++에서 스마트 포인터라고 부르는 특별한 종류의 포인터입니다. 스마트 포인터는 동적으로 할당된 객체의 수명을 자동으로 관리해주는 포인터로, 일반적인 포인터와 달리 delete를 직접 호출할 필요가 없습니다. unique_ptr은 스마트 포인터 중에서도 하나의 객체를 단독으로 소유하고, 복사나 대입이 불가능한 포인터입니다. unique_ptr은 다음과 같은 장점이 있습니다. 객체의 수명을 범위(scope)에 맞춰서 자동으로 관리해줍니다. unique_ptr이 소멸되면, 가리키는 객체도 함께 소멸됩니다. 불필요한 복사를 방지하고, 이.. 2024. 1. 22.
weak_ptr(스마트 포인터) shared_ptr에서 만약 shared_ptr a(new Knight()); shared_ptr b(new Knight()); a->_target = b; b->_target = a; 이렇게 서로를 물고있는 상황이라면 하나를 nullptr 로 밀어주지 않는 이상 삭제가 되지않습니다. weak_ptr은 C++ 표준 라이브러리의 스마트 포인터 중 하나로, shared_ptr과 같은 객체를 공유할 수 있지만, 참조 카운트에 영향을 주지 않는 포인터입니다. weak_ptr은 임시적으로 객체에 접근할 때 사용하며, lock 함수를 통해 shared_ptr로 변환하여 객체에 접근할 수 있습니다. weak_ptr은 순환 참조 문제를 해결하는데 유용합니다. 순환 참조란, 서로가 서로를 가리키는 shared_ptr들이.. 2024. 1. 22.
shared_ptr(스마트포인터) shared_ptr은 C++ 표준 라이브러리의 스마트 포인터 중 하나로, 여러 개의 shared_ptr이 하나의 객체를 공유할 수 있습니다. shared_ptr은 참조 카운팅(reference counting)을 사용하여 객체의 수명을 관리합니다. 즉, 객체를 가리키는 shared_ptr의 개수를 세어서, 마지막 shared_ptr이 소멸하거나 다른 객체를 가리키도록 변경되면 객체를 자동으로 삭제합니다. shared_ptr은 다음과 같은 방법으로 생성할 수 있습니다. // make_shared 함수를 사용하여 객체를 동적 할당하고 shared_ptr로 감싼다. std::shared_ptr p1 = std::make_shared(10); // 기존의 포인터를 shared_ptr로 변환한다. int* p2 .. 2024. 1. 22.
스마트 포인터 스마트 포인터 : 포인터를 알맞은 정책에 따라 관리하는 객체( 포인터를 래핑해서 사용) shared_ptr, weak_ptr, unique_ptr 이렇게 3가지가 있으며 Shared_ptr 구현 class Knight { public: Knight() { cout 2023. 3. 6.
728x90