我正在努力使这一点变得清晰起来。

int* arrayA = new int[3];
int arrayB[3] = {1,2,3}

arrayA = arrayB;
arrayB的值会复制到arrayA吗?
还是arrayA成为指向arrayB的指针?

最佳答案

newevil,尤其是对于数组。如果需要动态数组,请使用std::vector;如果需要静态one.1,请使用std::array

现在,实际答案很简单。 arrayA是一个指针。因此,它指向arrayB。这具有以下附加效果:

  • 您现在泄漏了分配的指针。
  • 尝试delete arrayA的操作现在将崩溃或出现其他不愉快的情况,因为您将尝试释放未分配的内存。

  • 实际上,尽管C++允许分配结构和类,但它根本不支持分配数组。除非对象的一部分按照std::vector那样进行管理,或者按照std::array那样作为数组成员进行管理(注意:std::array是C++ 11)。

    1主要原因是容器确保资源将在其析构函数中释放,即所谓的RAII idiom,避免了大多数内存泄漏和悬挂引用的机会。

    关于c++ - C++中的指针和动态分配的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19005485/

    10-09 17:18