2014-03-31 4 views

답변

3

가 제대로 작동하려면 당신은 제대로 unique_ptr이 유지 될 유형을 지정해야합니다 :

std::unique_ptr<A[]> ptr(new A[100]); 

delete[] 대신 delete 사용하는 Deleter가 기본값으로 사용됩니다.

2

정확히 가리키는 유형을 A[]으로 지정하면 배열 형식에 대해 unique_ptr의 템플릿 전문화가 있으므로 정확히 delete[] 포인터가됩니다.

유형이 자동으로 유추 될 수있는 경우 여기에 잘못 갈 기회가 없었을 것입니다. 즉,이 같은 (std::make_pair과 같은 맥락에서) 함수 호출을 할 수있는 포인터를 생산하는 표현, 필요 :

auto ptr = make_unique(new A[100]); 

이 C++ 11에서 실종 유용한 유틸리티입니다,하지만 그것은되었습니다 C++ 14에 추가되었습니다.

관련 문제