2012-06-26 65 views
2

可能重複:
Undefined, unspecified and implementation-defined behavior刪除同樣的對象兩次

我知道調用刪除同一對象上是災難性的。但只要在第二次刪除調用之前沒有爲其他對象重新分配內存,情況就是如此。但是,即使這樣做是錯誤的?如果我刪除了cout,代碼不會轉儲核心。

int main() 
{ 
    A *a1 = new A(); 
    delete a1; 
    cout<<a1<<endl; 
    delete a1; 
} 
+0

請問您能否澄清您的問題 – Jordan

+0

您爲什麼要這樣做? – mathematician1975

+1

這是未定義的行爲。它可能工作,或者可能會中斷。 –

回答

6

What happens in a double delete?

是的,這是非常錯誤的。

最大的問題是行爲未定義。所以在一個編譯器的情況下,你可能會忽略它,但總的來說,它往往會導致崩潰。