스마트 포인터는 C++에서 제공하는 포인터의 한 형태로, 자동 메모리 관리를 지원하는 포인터다.
C++은 C#과 같이 가비지 컬렉션을 지원하는 언어와는 다르게, 메모리를 동적으로 할당했다면 반드시 수동으로 해제해야 한다.
이를 위해 등장한 것이 바로 스마트 포인터 이며, 스마트 포인터는 포인터가 가키리는 메모리를 더 이상 사용하지 않을 경우 자동으로 해제하는 역할을 한다.
#include <iostream>
#include <memory>
using namespace std;
int main()
{
unique_ptr<int> uPtr(new int(1945));
// auto는 더 이상 쓰지 않는다.
auto_ptr<int> aPtr(new int(1945));
shared_ptr<int> sPtr(new int(1945));
return 0;
}
std::unique_ptr: 유일한 포인터로, 이 포인터를 가리키는 여러 인스턴스가 존재할 수 없다.
std::shared_ptr: 공유 포인터로, 내부적으로 래퍼런스 카운팅을 수행하고, 카운터가 0이되면 해제된다. 즉, 동일 포인터를 가리키는 객체가 여럿 존재할 수 있고, 이들이 모두 사라져야 사라진다.
std::weak_ptr: 공유 포인터에 순환 참조와 같은 문제가 발생하는 경우를 위한 포인터로, 순환 참조를 막아준다. 또한 lock() 함수를 통해 공유 포인터로 바꿀수도 있다.
'Study > C++' 카테고리의 다른 글
String 클래스의 구조와 friend 선언을 통한 연산자 오버로딩의 출력 (0) | 2024.10.23 |
---|---|
Wrapper Class (0) | 2024.10.20 |
[C++] Header File (0) | 2023.10.22 |
[C++] Exception (0) | 2023.10.15 |
[C++] Template (0) | 2023.10.15 |