#include <iostream>
using namespace std;
class A{
public:
int s;
// ~A(){}
};
int main(){
A *c = new A[10];
delete c;
return 0;
}
上面的代码可以成功运行,但是当我的代码会出错时。谁能告诉我为什么?
答案 0 :(得分:2)
代码的行为未定义。
如果delete[] c;
是指向分配有c
的内存的指针,必须才能写new[]
。
(有趣的是,有些编译器会为你解决这个问题,但不要依赖它,因为那时你不是在编写可移植的C ++)。