C++에서 다른 방법으로 안전하게 할당 된 것에 대한 포인터입니까?벌거 벗은 포인터는 얼마나 나쁜가?
지금까지 모든 동적 메모리 요구에 STL 컨테이너 (한 가지 경우에는 배열이지만 다른 질문)를 사용하여 명시 적으로 new
키워드를 사용할 필요가 없었습니다. 나는 또한 blithely 일반 ol 'int *foo
포인터를 참조하는 것들을 사용했습니다. 이제는 스마트 포인터에 대해 읽었습니다. (자바에 대해서는 잘랐습니다. 이전에는 이것에 대해 걱정할 필요가 없었습니다.) 일반적인 지혜는 "맨손으로 나쁘다. 사용하지 마세요."라고되어 있습니다.
얼마나 많은 문제가 있습니까? 그들이 가리키는 것들이 다른 파괴 조건을 가지고있는 한, 안전하게 포인터를 계속 사용할 수 있습니까? 내가 도망 갈 수있는 것이지만 앞으로는 피해야합니까? 아니면 제작에 재앙이되어 서둘러 수정해야합니까?
예외 안전 RAII를 읽고 C++ 11의 새로운 스마트 포인터 중 두 가지를보아야합니다 (부스트가 잠시 동안있었습니다) :'std :: shared_ptr'및'std :: shared_ptr unique_ptr '. 그리고 비슷한 질문이 많이 있습니다 : http://stackoverflow.com/questions/6675651/when-should-i-use-c-pointers-over-smart-pointers. 특히, 예외 안전성은 예외가 발생하고 스택이 해제 될 때 메모리 누수와 같은 관련 문제를 방지하고 배워야하는 주목할만한 특징이 있습니다. –
birryree