[英]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.