【问题标题】:Cannot delete array [duplicate]无法删除数组[重复]
【发布时间】:2018-04-27 07:22:24
【问题描述】:

我是编程新手,我不知道如何删除和排列。

int* array = new int[5];

我试图像这样删除数组

delete array[5];

但我收到一个错误:无法删除“int”类型的表达式

我也试过

delete [5]array;

但我得到一个错误:错误:预期的表达式

如何删除数组?我不知道还能做什么?

提前感谢您的帮助。非常感谢。

【问题讨论】:

  • 看起来您正在尝试学习 C++ 及其基于猜测的语法。那是行不通的。你应该退后一步,从一本好书中系统地学习语言。
  • 几乎任何本书都应该告诉你如何去做。如果您没有,请考虑this list of good books
  • 另外,使用newdelete 进行动态分配很容易了解和学习,但是一旦您知道如何使用它们,通常就不需要它们了。在您的示例中,如果您想要一个包含 int 元素的“动态数组”,请使用 std::vector,如在 std::vector<int> array(5); 中将 array 定义为五个元素的向量。
  • `删除[]数组;`
  • 抱歉,我尝试在搜索栏中搜索,但没有看到任何内容。我应该删除这个吗?

标签: c++


【解决方案1】:

使用以下内容:

delete [] array;   // Delete an array
array = 0;      // Clear array to prevent using invalid memory reference

【讨论】:

    【解决方案2】:

    试试delete []array; 就可以了。 array 是一个指向 5 元素动态数组开头的指针,因此您只需删除一个指针。

    【讨论】:

    • 不是动态指针。它是一个指向动态分配内存的指针。动态指针是在堆上创建的指针。
    • 你没有删除指针,你删除了它们指向的东西。这是一个重要的区别,尤其是对于初学者。
    【解决方案3】:

    正确的用法是delete []array。调用delete时不需要指定大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      相关资源
      最近更新 更多