0
我有以下代码。它无限期地调用该类的析构函数并崩溃。如果我将数组的大小更改为大于0的值,则工作正常。为什么程序进入无限循环
#include <iostream>
using namespace std;
class ClassA {
public:
ClassA() {
cout << "constructor" << endl;
}
~ClassA() {
cout << "destructor" << endl;
}
};
int main() {
ClassA *ptr;
cout << (void*) ptr << endl;
ptr = new ClassA[0];
cout << (void*) ptr << endl;
delete[] ptr;
cin.get();
return 0;
}
如果它适用于数组大小> 0,那么问题是什么? – foo64 2013-04-11 21:30:08
详细信息:http://stackoverflow.com/questions/1087042/c-new-int0-will-it-allocate-memory零大小的数组有点不确定的行为,你不应该使用它的指针,除了删除。 – 2013-04-11 21:30:13
它在这里运行正常http://liveworkspace.org/code/2xF98s$0 – taocp 2013-04-11 21:30:36