본문 바로가기

순환 참조2

[C++] 스마트 포인터에 대해 알아보자(3) | 약한 포인터 | std::weak_ptr 공유 포인터와 참조 카운팅에 대해 모른다면 다음 포스팅을 보고 오는 걸 추천한다. 참조 카운팅 https://woo-dev.tistory.com/61 공유 포인터 https://woo-dev.tistory.com/111 weak_ptr는 unique_ptr이나 shared_ptr 와는 다르게 단독으로 혼자 사용할 수 있는 포인터가 아니다. 다음은 weak_ptr 이 무엇인지 이해하기 위해 알아야 하는 것들이다. [강한 참조] 먼저 공유 포인터는 참조 카운팅을 사용하여 현재 소유하고 있는 원시 포인터가 참조되는 횟수를 추적한다는 것을 기억해야 한다. 또한 참조의 종류엔 강한 참조(strong reference)와 약한 참조(weak reference)가 있고, 아직까진 약한 참조가 무엇인지 모르지만 공유 .. 2020. 3. 21.
[C++] 스마트 포인터에 대해 알아보자(2) | 공유 포인터 | std::shared_ptr 유니크 포인터와 참조 카운팅에 대해 모른다면 다음 포스팅을 보고오는 걸 추천한다. 참조 카운팅 https://woo-dev.tistory.com/61 유니크 포인터 https://woo-dev.tistory.com/110 [유니크 포인터의 단점] 먼저 저번에 다루었던 유니크 포인터는 원시 포인터에 대한 소유권을 다른 유니크 포인터와 공유할 수 없었다. 즉 복사 생성과 복사 대입 연산이 불가능하여, 공유를 허용하지 않았다. 이러한 원칙들로 인해 유니크 포인터는 사용자가 메모리 관리에 대해 실수할 여지를 막아주었다. 하지만 함수에 인자로 포인터를 넘겨야 할 경우 get을 통해 원시 포인터를 반환하는 방식으로 넘겨야 했다. 그러나 이는 외부에서 마음대로 지워버릴 수 있기 때문에 위험했으며, 원시 포인터를 반환.. 2020. 3. 21.