본문 바로가기

C++

[C++] auto_ptr

string 객체는 문자열을 저장하기 위해 버퍼를 동적으로 할당해서 관리하는데 이 메모리는 자동으로 회수된다.

그러나 파괴자는 동적으로 할당한 메모리에 대해서는 책임을 지지 않는다.

 

using namespace std; 

void main()
{
     double *rate;
     rate=new double;
     *rate=3.1415;
     cout << *rate << endl;
     // delete rate;
}

 

위 코드처럼 rate 포인터 변수를 동적으로 할당하고 해제하지 않으면 메모리 누수가 발생한다. 

auto_ptr은 동적으로 할당된 메모리를 자동으로 해제하는 포인터의 래퍼 클래스이다.

 

void main()
{
     auto_ptr<double> rate(new double);    
     *rate=3.1415;
     cout << *rate << endl;
}

 

auto_ptr은 template<typename T> class auto_ptr 형식으로 정의된 클래스 템플릿으로 T*형의 포인터를 대신 관리한다.

이 클래스의 파괴자에서 delete로 해제하므로 main 함수가 종료될 때 파괴되면서 자동으로 할당한 메모리가 해제된다.

'C++' 카테고리의 다른 글

[C++] 반복자  (0) 2022.01.10
[C++] 함수 객체  (0) 2022.01.10
[C++] 네임 스페이스  (0) 2022.01.08
[C++] 멤버 포인터 변수, 연산자  (0) 2022.01.07
[C++] 캐스트 연산자 (static, dynamic, const, reinterpret)  (0) 2022.01.07