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