【问题标题】:If i allocated block of memory using new operator in C++,how to deallocate it without using square braces [duplicate]如果我在 C++ 中使用 new 运算符分配内存块,如何在不使用方括号的情况下释放它[重复]
【发布时间】:2019-02-03 21:59:09
【问题描述】:
#include <iostream>

using namespace std;

int main()
{
   int *p = new int[7];
   delete p;

   return 0;
}

我可以像这样在 C++ 中释放整个内存块吗? 提前致谢。

【问题讨论】:

  • new 可以匹配delete,而new[] 必须匹配delete[]
  • stackoverflow.com/questions/18046571/… ... 简而言之:不,它不起作用,这是未定义的行为
  • 如果不需要,请不要使用new[]。而是使用std::vector 或可能(取决于用例和要求等)std::array
  • 现在开始使用向量和列表。

标签: c++


【解决方案1】:

使用不带方括号delete[]new[] 分配的解除分配数组在标准上是未定义的行为,这意味着它有时可能会起作用,或者有时可能会从你的鼻子里召唤出恶魔。没有编译器扩展对此做出额外保证。

当您需要动态数组时使用std::vector

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-20
    • 2014-03-15
    • 2012-12-05
    • 2014-03-14
    • 1970-01-01
    • 2012-11-29
    • 2021-06-11
    • 2012-06-02
    相关资源
    最近更新 更多