일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
- 직장인인강
- 패캠챌린지
- 직장인자기계발
- 알버트
- AI
- 패스트캠퍼스
- 패스트캠퍼스후기
- R
- 한번에끝내는Java/Spring웹개발마스터초격차패키지
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지
- albert
- SKT
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
- Today
- Total
제주 탈출 일지
스마트 포인터(smart pointer) 본문
스마트 포인터를 사용하면 메모리 해제와 같은 부분에서 신경을 덜 쓸 수 있고, 단순 포인터를 사용하는 것보다 편리하다고 한다. 아직 잘 모르겠다, .ㅋ
스마트 포인터에는 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로 가리키고 있으면 메모리가 영원히 해제되지 않음)
'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 |