【问题标题】:How can i delete a pointer to array in C++如何在 C++ 中删除指向数组的指针
【发布时间】:2020-07-10 22:21:54
【问题描述】:

如果我想删除这样初始化的数组,我想知道如何使用删除运算符:

int (*my_ptr)[10] = new int[3][10];

这似乎无效:

delete[][]

【问题讨论】:

  • delete[][] 无效。使用delete[]。它将根据需要调用所有析构函数。

标签: c++ memory-leaks delete-operator


【解决方案1】:

my_ptr 是一个包含 3 个元素的数组。每个元素都是一个int[10] 类型。

你调用delete[] my_ptr;删除这3个元素。

【讨论】:

  • 实际上是一个由 3 个 10 个元素组成的数组。我也先搞错了。很奇怪,但是动态部分在元素类型的中间。
【解决方案2】:

new int[3][10] 只是创建一个动态数组,其元素本身就是数组。这与所有动态数组的删除方式相同:delete[]

【讨论】:

  • @asmmo 这可能会让人感到困惑,因为子对象没有静态存储。
猜你喜欢
  • 2020-06-24
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 2018-09-12
  • 2015-08-09
  • 2011-05-10
  • 1970-01-01
相关资源
最近更新 更多