繁体   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