본문 바로가기

Smart Pointer

[C++11] 새로운 스마트 포인터 unique_ptr(auto_ptr의 대체) C++11에서 auto_ptr이 사라지고 unique_ptr이 새로 추가되었습니다.auto_ptr의 문제점에 대해서는 아래의 글을 확인하시면 됩니다.2014/12/08 - [Programming/C&C++] - 스마트하지 못한 스마트한 포인터 auto_ptrauto_ptr을 대체하는 unique_ptr에 대해서 알아보도록 하겠습니다.unique_ptr은 auto_ptr과 거의 유사한 멤버를 가지고 있습니다.동적 할당된 포인터를 받아서 해당 포인터를 핸들링하고 자동으로 메모리를 해제하는 역할까지 동일합니다.* 연산자나 -> 연산자도 auto_ptr과 동일하게 지원합니다.unique_ptr을 생성하는 코드를 보도록 하겠습니다. #include #include #include struct TestStuff {.. 더보기
스마트하지 못한 스마트한 포인터 auto_ptr C/C++은 메모리 관리가 까다로운 언어입니다.개발자가 직접 메모리를 할당하고 해제해야 할 책임이 있습니다.C++의 STL에는 auto_ptr이라는 스마트 포인터가 존재합니다.다만 auto_ptr은 C++11 이후에는 사라졌기 때문에 사용이 불가능합니다.auto_ptr은 헤더에 구현되어 있습니다.auto_ptr이 스마트하지 못한 이유를 확인해 보겠습니다.auto_ptr은 템플릿 기반이기 때문에 어떤 타입의 포인터든지 받을 수 있습니다.클래스의 큰 특징은 객체가 지정된 범위(Scope)를 벗어나면 소멸자가 호출된다는 점입니다.이러한 특징을 통해서 클래스는 객체가 사라지기 전에 정리하거나 해제해야 할 것을 소멸자에서 호출합니다.메모리를 할당하고 해제하지 않으면 메모리 누수(Memory Leak)가 발생합니다.. 더보기