請看看這段代碼刪除指針自動變量
int i = 10; //line 1
int *p = &i; //line 2
delete p; //line 3
cout << "*p = " << *p << ", i = " << i << endl; //line 4
i = 20; //line 5
cout << "*p = " << *p << ", i = " << i << endl; //line 6
*p = 30; //line 7
cout << "*p = " << *p << ", i = " << i << endl; //line 8
這是什麼代碼的結果?尤其是第3,5和7行?他們是否調用未定義的行爲?輸出是什麼?
編輯:我試着運行它使用g ++,它的編譯和運行良好!我在Windows 7上使用MinGW。
標準在這種情況下說什麼?
你有沒有試過運行它?可能你可以添加你的跑步結果,然後我們可以討論它? – Nim 2010-12-03 08:59:54
爲什麼不編譯看看?我得到一個段錯誤... – Kricket 2010-12-03 09:01:50
對象0x7fff5fbff5ec的***錯誤:被釋放的指針未被分配 ***在malloc_error_break中設置一個斷點,以便在運行它時進行調試...在MacOS X中用g ++ 4.1編譯。我對「跑步」的定義是跑得不好。 – 2010-12-03 09:06:59