-1
我使用delete
以去除使用new []
創建對象時段故障。這是未定義的行爲。但是爲什麼在下一個程序中,這個操作會導致不同的結果?在第二種情況下,分段錯誤,並且在第一個中沒有。GCC:使用刪除
class A {
public:
A() {std::cout << "A::A()" << std::endl;}
~A() {std::cout << "A::~A()" <<std::endl;}
};
int main() {
//1:
char* pc = new char[5];
delete pc; //OK
//2:
A* pa = new A[5];
delete pa; //Segmentation fault
return 0;
}
它應該是'刪除[] pa'因爲你故意刪除*陣列*。 –
'A * PC =新的char [5];'不被編譯... – Jarod42