보다시피, 스마트 포인터는 많은 실제 C ++ 프로젝트에서 광범위하게 사용됩니다.
사실, 객관적으로 대다수의 코드는 현재 가비지 수집기를 추적하여 현대 언어로 작성되었습니다.
어떤 종류의 스마트 포인터가 RAII 및 소유권 이전을 지원하는 데 분명히 도움이 되더라도, "가비지 수집"의 방법으로 공유 포인터를 사용하는 경향이 있으므로 프로그래머가 할당에 대해 많이 생각할 필요가 없습니다. .
사이클에 대해 여전히 걱정할 필요가 있기 때문에 나쁜 생각입니다.
Boehm GC와 같은 적절한 가비지 수집기를 통합하는 것보다 공유 포인터가 더 인기있는 이유는 무엇입니까? (또는 실제 GC보다 인기가 높다는 것에 전혀 동의하십니까?)
오, 와우, 당신의 사고 방식에는 많은 문제가 있습니다.
Boehm의 GC는 어떤 의미에서든 "적절한"GC가 아닙니다. 정말 끔찍합니다. 보수적이므로 누출되어 설계 상 비효율적입니다. 참조 : http://flyingfrogblog.blogspot.co.uk/search/label/boehm
공유 포인터는 객관적으로 GC만큼 인기가 거의 없습니다. 대다수 개발자가 현재 GC 언어를 사용하고 공유 포인터가 필요하지 않기 때문입니다. C ++에 비해 구직 시장에서 Java와 Javascript를 살펴보십시오.
GC가 접선 문제라고 생각하기 때문에 고려 사항을 C ++로 제한하는 것 같습니다. 선택 편견을 도입 하는 것은 아닙니다 ( 좋은 GC를 얻는 유일한 방법은 처음부터 언어와 VM을 디자인하는 것입니다). 적절한 가비지 수집을 원하는 사람들은 C ++을 고수하지 않습니다.
참조 카운팅 스마트 포인터를 사용하는 이유는 무엇입니까?
C ++로 제한되어 있지만 자동 메모리 관리를 원합니다.
std::unique_ptr
충분하고 런타임 성능 측면에서 원시 포인터보다 오버 헤드가 없습니다.std::shared_ptr
어디에서나 사용 하면 소유권 의미론이 모호 해져 자동 리소스 관리 이외의 스마트 포인터의 주요 이점 중 하나를 잃게됩니다. 코드의 의도를 명확하게 이해하는 것입니다.