new로 생성한 포인터 변수는 반드시 delete로 할당된 메모리를 해제해 주어야 한다.
짧 은 코드나 중간에 실행 경로를 바꾸는 일이 없을 경우에는 처리가 비교적 쉽지만 예외사항을 처리하고 중간에 함수를 빠져나가는 경우가 있을경우 힙 영역에 할당한 메모리 해제에 대하여 신중해야한다. 이럴경우 auto_prt 을 사용하면 편리하다.
MySQL Connector/C++ 을 사용하면서 사용하게 되었는데 아주 놈이다.
사용 방법은 아래와 같다.
std::auto_ptr< 데이터 타입 > variable( 할당할 데이터 포인터 );
std::auto_ptr< int > myInt( new int(5) );
위 의 구문은 myInt 를 int 형을 가리키는 포인터이며 새로 생성한 int(5)를 가리키고 있다. 이때 생성한 new int(5) 는 명시적으로 delete로 해제 하지 않아도 함수가 종료되는 시점에 자동으로 delete가 된다.
auto_ptr 은 기본적으로 포이터만 핸들링 할 수 있으며 포인터 배열( new int[5] )의 경우 메모리 해제에 문제가 있다. 그리고 stl 의 container 에는 사용할 수 없다.
auto_ptr 은 기본 생성자및 소멸자 외에 다음과 같은 메소드를 갖고 있다.
auto_ptr::get()
auto_ptr이 담고 있는 데이터의 포인터를 반환
auto_ptr::operator *
auto_ptr이 담고 있는 객체
auto_ptr::operator ->
auto_ptr 이 담고 있는 객체의 멤버에 접근
auto_ptr::operator =
auto_ptr 이 가리키고 있는 포이터의 소유권 이전 다른 auto_ptr에게 받아오고 넘겨준 auto_ptr 은 갖고 있던 포인터를 해제함.
auto_ptr::release()
auto_ptr 이 가리키고 있는 포인터를 명시적으로 삭제함.
auto_ptr::reset()
기존 포인터를 삭제하고 새로운 포인터를 할당한다.
짧 은 코드나 중간에 실행 경로를 바꾸는 일이 없을 경우에는 처리가 비교적 쉽지만 예외사항을 처리하고 중간에 함수를 빠져나가는 경우가 있을경우 힙 영역에 할당한 메모리 해제에 대하여 신중해야한다. 이럴경우 auto_prt 을 사용하면 편리하다.
MySQL Connector/C++ 을 사용하면서 사용하게 되었는데 아주 놈이다.
사용 방법은 아래와 같다.
std::auto_ptr< 데이터 타입 > variable( 할당할 데이터 포인터 );
std::auto_ptr< int > myInt( new int(5) );
위 의 구문은 myInt 를 int 형을 가리키는 포인터이며 새로 생성한 int(5)를 가리키고 있다. 이때 생성한 new int(5) 는 명시적으로 delete로 해제 하지 않아도 함수가 종료되는 시점에 자동으로 delete가 된다.
auto_ptr 은 기본적으로 포이터만 핸들링 할 수 있으며 포인터 배열( new int[5] )의 경우 메모리 해제에 문제가 있다. 그리고 stl 의 container 에는 사용할 수 없다.
auto_ptr 은 기본 생성자및 소멸자 외에 다음과 같은 메소드를 갖고 있다.
auto_ptr::get()
auto_ptr이 담고 있는 데이터의 포인터를 반환
auto_ptr::operator *
auto_ptr이 담고 있는 객체
auto_ptr::operator ->
auto_ptr 이 담고 있는 객체의 멤버에 접근
auto_ptr::operator =
auto_ptr 이 가리키고 있는 포이터의 소유권 이전 다른 auto_ptr에게 받아오고 넘겨준 auto_ptr 은 갖고 있던 포인터를 해제함.
auto_ptr::release()
auto_ptr 이 가리키고 있는 포인터를 명시적으로 삭제함.
auto_ptr::reset()
기존 포인터를 삭제하고 새로운 포인터를 할당한다.
'Dev Story' 카테고리의 다른 글
MySQL Connector/C++ 1.0.2 Alpha Release (0) | 2008.12.22 |
---|---|
강력한 무료 로컬 데이터베이스 시스템 - SQLite 3.6.7 Released! (0) | 2008.12.18 |
한국정보보호진흥원에서 배포하는 SEED 블럭암호화 알고리즘 (0) | 2008.12.07 |
MySQL Connector/C++ 1.0.1alpha is available! (0) | 2008.12.03 |
강력한 무료 로컬 데이터베이스 시스템 - SQLite 3.6.6.2 Released! (0) | 2008.11.28 |