생활
[C++프로그래밍]일반 포인터와 스마트 포인터 관련하여 질문 드립니다.
KLDP에 계신 여러분들은 일반 포인터와 스마트 포인터를 어떻게 보시는지 궁금합니다.
구글링을 해보면 스마트 포인터는 기존에 C#/Java같이 G.C의 혜택을 받았던 개발자들에게
메모리 해제라는 짐을 덜어준 것이라고 알고 있습니다.
하지만, 멀티 스레드 환경에서는 reference-counting 방식의 포인터는
생성, 복사, 파괴 과정에서 원자적이어야 하므로 퍼포먼스가 저해될 수 있다고도 알고 있습니다.
그런데, 스마트 포인터 자체가 일반 포인터에 비해 많이 무거운지라(정말 스마트 포인터가 일반 포인터에 비해 많이 무거운가요?) 일반 포인터를 사용하는 것을 선호한다는 얘기도 줏어들었습니다.
지금까지 알고 있는 지식을 취합해보면 싱글 스레드 기반에서는 스마트 포인터를 써도 크게 무리는 없겠지만 멀티 스레드에서는 일반 포인터를 쓰는 것이 좋다.
이정도로 정리가 되는데 C++ 에서의 자원 관리 및 성능에 있어서 고수님들은 어떤 포인터를 쓰고 왜 쓰는지 이야기를 듣고 싶습니다.
3개의 답변이 있어요!