제주 탈출 일지

스마트 포인터(smart pointer) 본문

C++

스마트 포인터(smart pointer)

귀건 2020. 8. 18. 18:21
728x90
반응형

스마트 포인터를 사용하면 메모리 해제와 같은 부분에서 신경을 덜 쓸 수 있고, 단순 포인터를 사용하는 것보다 편리하다고 한다. 아직 잘 모르겠다, .ㅋ 

 

스마트 포인터에는 3가지 종류가 있다.

1. unique_pointer

2. shared_pointer

3. weak_pointer

 

auto_pointer는 unique_pointer를 만드려다 실패한 결과물이라고 한다. 안씀.

일반적으로 스마트 포인터를 사용할 떄는, 1번 unique_pointer를 많이 사용한다고 한다.

 

선언

unique_ptr<포인터 타입> 포인터이름 = make_unique("객체에 생성자에 필요한 인수들...")로 선언하면 객체를 하나 생성하고 그 객체를 가리키게 된다. 또 사용이 끝난후에 delete 키워드를 통해 메모리를 해제할 필요가 없다.

 

 

shared_pointer는 하나의 객체를 몇 개의 포인터가 참조하고 있는지 확인하기 위한 포인터이다.

use_count()를 사용하면 shared_pointer가 가리키는 객체를 참조하는 포인터가 몇 개인지 반환해준다.

shared_pointer를 생성하기 위해서는 unique_pointer와 동일하게 make_shared함수를 사용하면 된다.

 

shared_ptr<포인터 타입> 포인터 이름 = make_shared("객체 생성자에 필요한 인수들");

 

weak_pointer는 포인터가 소유하는 객체에 대한 접근을 제공하지만, shared_pointer에는 걸리지 않는 포인터이다.

shared_pointer의 순환 참조문제를 해결하기 위해서 제공된다.(서로를 shared_pointer로 가리키고 있으면 메모리가 영원히 해제되지 않음)

728x90
반응형

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

연산자 오버로딩 예제  (0) 2020.09.30
양방향 연결리스트(DLinkedList) - C++  (0) 2020.09.03
템플릿 (함수, 클래스)  (0) 2020.08.17
추상 클래스(abstract class)  (0) 2020.08.17
오버라이딩(overriding)  (0) 2020.08.14
Comments