2017-02-20 4 views
0

어떤 방식 으로든이 어레이를 관리해야합니까, 아니면 unique_ptr이 관리합니까? 나는 arry가 새로운 값으로 할당되면 더 이상 관리되지 않는다고 읽었습니다. 나는 이것을 아주 잘 이해하지 못한다.이 unique_ptr을 수동으로 삭제하거나 관리해야합니까?

int main() { 

    int i = 0; 
    int maxSpaceSize = 10;  
    unique_ptr<int[]> arry (new int[maxSpaceSize]()); 

    for (i = 0; i < maxSpaceSize; i++) { 
     arry[i] = i; 
     cout << arry[i]; 
     cout << endl; 
    } 

    return 0; 
} 

내 목표는 자동 가비지 수집을 사용하여 동적 배열을 만들고 이해하는 것입니다. 어떤 시점에서 나는 사용자에게 배열의 크기를 정의 해 줄 것을 요청할 것이고, 그것은 maxSpaceSize에 할당 될 것이다.

도움이되는 의견을 보내 주셔서 감사합니다.

+0

음, 어디 ... ['arry.reset (nullptr)를'] 참조 (http://en.cppreference.com/w/cpp/memory/unique_ptr/reset)? – WhiZTiM

답변

2

어떤 방식 으로든이 어레이를 관리해야합니까, 아니면 unique_ptr이 관리합니까?

std::unique_ptr이주의를 기울입니다. 원시 배열 deleters 내가이 배열이 새 값을 할당됩니다 경우 다음이 가 더 이상을 관리하지 않습니다 읽었습니다 delete [] pointee;

전화에 대한 전문성이있다.

잘못된 정보 (강조 표시)입니다.

은 기존의 pointee를 삭제하고 새로운 것을 처리합니다.

그래서 때마다 그 행동이 적용됩니다

maxSpaceSize = 50; 
arry = unique_ptr<int[]>(new int[maxSpaceSize]); 

같은 물품.

Live Demo

+0

'unique_ptr'가 가질 수 없다면 아무도 할 수 없습니다. – user4581301

관련 문제