int main()
{
myClass obj;
.... /* doing things */
....
delete &obj; /* illegal */
}
讓我們假設myClass是一個適當的C++類,其中包含所有的東西。現在,我知道這是非法的,這個程序會在運行時崩潰。第一件事就是代碼試圖刪除一個堆棧對象,然後在作用域結束後再次刪除堆棧對象。我想知道這個非法操作的內部。即刪除會發生什麼,它會調用析構函數嗎?它可能看起來像你瘋了一樣,但請幫助我理解。非法刪除一個堆棧對象
它將*可能*崩潰,但與不確定的行爲的情況下,它可能會,而另一方面,不死機或崩潰的大部分時間,但並非總是如此,甚至會造成[鼻魔(HTTP:/ /www.catb.org/jargon/html/N/nasal-demons.html)。更重要的是,你的問題沒有辦法說明如何處理,未定義行爲的本質在大多數情況下是不可預測的。 –
通過在非優化版本中檢查生成的代碼,不難發現它實際做了什麼 – sehe
這不是一個騙局。 OP在這裏不是問是否安全,他們知道不是。 – jrok