簡體   English   中英

我需要手動刪除或管理此unique_ptr嗎

[英]Do I need to manually delete or manage this unique_ptr

我是否需要以任何方式管理此數組,還是由unique_ptr進行管理? 我已經讀到,如果arry被分配了一個新值,那么它將不再被管理。 我對此並不陌生。

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。

感謝您提供有用的意見。

我是否需要以任何方式管理此數組,還是由unique_ptr進行管理?

std::unique_ptr將注意。 原始數組delete [] pointee;有一個專門的功能,可以調用delete [] pointee;

我已經讀到,如果arry被分配了一個新值,那么它將不再被管理

這是錯誤的信息(強調我的意思)。

std::unique_ptr賦值運算符重載將刪除舊的Pointe,並進一步照顧新的Pointe。

所以每當你寫類似

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

該行為將適用。

觀看現場演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM