操作员删除[]的作用是什么?

时间:2017-07-27 13:13:04

标签: c++ memory

#include <iostream>
using namespace std;
class A{
  public:
    int s;
    // ~A(){}
};

int main(){
  A *c = new A[10];  

  delete c;
  return 0;
}

上面的代码可以成功运行,但是当我的代码会出错时。谁能告诉我为什么?

1 个答案:

答案 0 :(得分:2)

代码的行为未定义。

如果delete[] c;是指向分配有c的内存的指针,必须才能写new[]

(有趣的是,有些编译器会为你解决这个问题,但不要依赖它,因为那时你不是在编写可移植的C ++)。