是否可以在内存分配之前复制动态分配的数组指针?

Ant*_*ony 0 c++ arrays

首先,如果之前有人问过,我道歉.我似乎找不到合适的信息.

以下代码不会打印"300",因为我认为它会:

#include <iostream>

int main()
{
  int *array;
  int *arrayCopy = array;

  array = new int[4];

  array[0] = 100;
  array[1] = 200;
  array[2] = 300;
  array[3] = 400;

  std::cout << arrayCopy[2];

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我移动线路,它确实如此

int *arrayCopy = array;
Run Code Online (Sandbox Code Playgroud)

在上面的代码中它后面的行下面.这是为什么?

(PS:我知道有一个内存泄漏,而且std :: vector更好......我只是好奇).

Nav*_*een 5

不,当你做int *arrayCopy = array;你捕捉的值arrayarrayCopy 在那个时刻,所以如果修改(注意,最初array是指向一些随机的位置,使其指向正确的位置做new)的array 您复制到arrayCopy随后那些改变不会反映回来arrayCopy.