[effective STL] 항목 08 : auto_ptr의 컨테이너는 절대 말들지 말기
2015. 9. 6. 19:19ㆍ프로그래밍/Effective STL
728x90
728x90
문제점
auto_ptr의 특징상 소유권이 이전 되면 이전의 포인터가 NULL이 된다.
정렬이나 기타 알고리즘을 사용할 때 특히 치명적이다.
지역 내에 있던 포인터가 있다면 그 포인터는 지역이 끝날 때 해제가 된다.
그러므로 컨테이너의 포인터가 하나 이상의 데이터가 NULL이 된다.
예시
sort 함수. 변형된 퀵소트 알고리즘을 사용하고 있다.
컨테이너 내의 특정 요소를 '피벗'으로 잡고 선택한 후에 분할정복.
피벗은 지역에서 자동 해제된다.(가리키고 있는 원본도)
해결
사용하지 말자.
728x90
반응형
'프로그래밍 > Effective STL' 카테고리의 다른 글
[effective STL] 항목 13 : 동적으로 할당된 배열보다는 vector와 string이 낫다. (1) | 2015.10.02 |
---|---|
[effective STL] 항목 10 : 할당자(allocator)의 일반적인 사항과 제약 사항 (1) | 2015.09.14 |
[effective STL] 항목 09 : 데이터를 삭제할 때에도 조심스럽게 선택 (0) | 2015.09.07 |
[effective STL] 항목 07 : 포인터를 컨테이너 담을 때 주의 (0) | 2015.09.06 |
[effective STL] 항목 06 : C++ 컴파일러의 어이없는 컴파일 조심! (2) | 2015.09.05 |
맴버 함수는 단일 요소 단위 보단 요소의 범위 단위로 (effective STL 05) (0) | 2015.08.27 |
size() == 0? empty()!! (effective STL 04) (0) | 2015.08.25 |