스마트포인터 2

2. 스마트포인터

스마트포인터는 동적 메모리를 관리하는 클래스이다. 일반적인 포인터와 똑같이 사용할 수 있지만 프로그래머가 직접 메모리 해제를 해주어야하는 포인터와 달리 스마트포인터는 알아서 메모리를 해제해준다. 스마트포인터는 3가지 종류가 있다. 1) unique_ptrunique_ptr ptr1 = make_unique(10);unique_ptr ptr2(new int(10));unique_ptr은 위와 같이 사용할 수 있고 unique라는 단어 뜻 그대로 다른 포인터가 해당 객체를 가르킬 수 없다. 그래서 복사도 불가능하다. 따라서 move와 같은 함수를 사용하여 객체의 소유권을 완전히 넘겨주는 식으로만 동작한다. 2) shared_ptrshared_ptr ptr1 = make_shared(10);shared_ptr..

1. Reference Counting

객체를 생성시키고 소멸시킬 때 문제점이 있다. A라는 객체가 B라는 객체를 참조하고 있는 경우 B라는 객체가 용도를 다해서 소멸시키게 되면 A는 이상한 메모리 공간을 참조하게 되어버린다. 이를 해결하기 위해 Reference Counting을 하는데 자신을 참조하고 있는 수를 센 후 0이 되었을 때 소멸시키는 것이다. 코드를 보면 더욱 이해하기 쉬울 것이다.RefCounting.h#pragma once//-----------------// RefCountable//-----------------class RefCountable{public: RefCountable() : _refCount(1) {} virtual ~RefCountable() {} // 최상위 클래스의 소멸자에는 virtual(메모리 릭..