我是否需要以任何方式管理此数组,或者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。
感谢您提供有用的意见。
答案 0 :(得分:2)
我是否需要以任何方式管理此数组,或者unique_ptr会处理它吗?
std::unique_ptr
会照顾。对于要调用delete [] pointee;
我已经读过,如果为arry分配了一个新值,那么 将不再受管理 。
这是错误的信息(强调我的)。
std::unique_ptr
的{{3}}将删除旧的指针,并进一步处理新指针。
所以每当你写一些像
这样的东西maxSpaceSize = 50;
arry = unique_ptr<int[]>(new int[maxSpaceSize]);
该行为将适用。