gpt4 book ai didi

c++ - C++中的指针和动态分配的数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:26 26 4
gpt4 key购买 nike

我正在努力在脑海中弄清楚这一点。

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

arrayA = arrayB;

arrayB 的值是否被复制到 arrayA?还是 arrayA 成为指向 arrayB 的指针?

最佳答案

Naked newevil ,特别是对于数组。如果需要动态数组,请使用 std::vector,如果需要静态数组,请使用 std::array1

现在实际的答案很简单。 arrayA 是一个指针。所以它指向arrayB。这具有额外的效果:

  1. 你现在泄露了分配的指针。
  2. 尝试删除 arrayA 现在会崩溃或发生其他令人不快的事情,因为您将尝试释放未分配的内存。

实际上,虽然 C++ 允许分配结构和类,但它根本不支持分配数组。除非对象的一部分要么像 std::vector 那样管理,要么像 std::array 那样作为数组成员(注意:std::array 是 C++11)。


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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com