我正在努力使这一点变得清晰起来。
int* arrayA = new int[3];
int arrayB[3] = {1,2,3}
arrayA = arrayB;
arrayB
的值会复制到arrayA
吗?还是
arrayA
成为指向arrayB
的指针? 最佳答案
裸new
是evil,尤其是对于数组。如果需要动态数组,请使用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/