[C++] Smart Pointer

2024. 4. 19. 18:17언어 및 엔진/C++

Smart Pointer

스마트 포인터

메모리 누수(메모리를 할당해 놓고 해제를 안하는 등)를 방지하기 위해
자동으로 메모리 해제를 시켜주는 포인터



unique_ptr

하나의 스마트 포인터 만이 특정 객체를 소유할 수 있도록 객체에 
소유권 개념을 도입한 스마트 포인터. 
해당 객체의 소유권을 가지고 있을 때만 소멸자가 해당 객체를 소멸할 수 있다.
1 : 1



shared_ptr

하나의 특정 객체를 참조하는 스마트포인터가 총 몇 개인지 참조. 
이렇게 참조하고 있는 스마트 포인터의 개수를 참조 횟수(Reference Count)라고 
하는데, 참조 횟수는 특정 객체에 새로운 shared_ptr이 추가될 때 마다 1씩 증가하고
 수명이 다할 때마다 1씩 감소. 따라서 ,shared_ptr의 수명이 다해 참조 횟수가 0이 
되면 Delete키워드를 사용해 메모리를 자동으로 해제한다.
1 : N
참조 횟수가 0이다 : 이무도 그 객체를 참조하고 있지 않는다. -> 필요가 없으니 해제해라.




weak_ptr

하나 이상의 shared_ptr인스턴스가 소유하는 객체에 대한 접근을 
제공하지만, 소유자의 수에는 포함되지 않는 스마트 포인터. shared_ptr인스턴스 
사이의 순환 참조를 위해 제거하기 위해 사용
참조 카운트의 증가, 감소는 시키지 않는다
1 : N이지만 참조만.
-순환 참조 : shared_ptr이 서로가 서로를 참조하고 있는 것.

'언어 및 엔진 > C++' 카테고리의 다른 글

[C++] Modern C++  (0) 2024.04.19
[C++] 메모리 구조와 메모리 단편화  (0) 2024.04.19
[C++] Overloading / Overriding  (0) 2024.04.19
[C++] Static / Extern  (0) 2024.04.19
[C++] TCP / UDP  (0) 2024.04.19