考虑这段代码:
using namespace std;
int* get()
{
unique_ptr<int> p (new int[4]);
return p.get();
}
int main(int argc, char **argv)
{
int *arr1=get();
int* arr2=get();
for(int i=0;i<4;i++)
{
arr1[i]=i;
arr2[i]=i*2;
}
for(int i=0;i<4;i++)
cout << arr1[i];
return 0;
}
arr1 和 arr2 指向同一个内存区域。所以他们共享相同的价值观。我不明白为什么,当我调用 arr2=get() 时:
unique_ptr<int> p (new int[4]);
这个对象不应该再次创建吗?它没有被删除,因为仍然可以通过 arr1 访问。如何获得两个不同内存区域的数组?