2011-03-23 6 views
0

내가 어떻게 PTR 용기를 청소 할 ptr_array에게지우기

boost::ptr_array<A, 10> a; 
... 
a.clear(); // missing 

을 취소 할 ptr_array?

답변

1

배열처럼 동작해야하고 C++에서 배열을 지울 수 없습니다. 할 수있는 일은 개별 요소를 NULL로 설정하는 것입니다. 워드 프로세서가 release를 호출하는 사후 조건이 있다는 것을 상태로, 트릭을 할 것입니다 a.release();를 호출 class synopsis에 따르면

+0

을 당신이 그것을 위해 제안 않습니다' a = boost :: ptr_array ()'? – visitor

0

, "모든 포인터는 null입니다." 그것이 사용되지 않는/(당신을 위해) 낭비 힙 할당 포함하기 때문에 엄격 수보다 효율적 있지만

실제로 구현 한 눈에,이를 확인 :

std::auto_ptr<this_type> release() 
{ 
    std::auto_ptr<this_type> ptr(new this_type); 
    this->swap(*ptr); 
    return ptr; 
}