[問題] reference to a deleted variable

看板C_and_CPP作者 (mimi)時間12年前 (2012/06/21 11:59), 編輯推噓4(4010)
留言14則, 10人參與, 最新討論串1/1
我在這個網頁 http://aszt.inf.elte.hu/~gsd/halado_cpp/ch03s03.html 看一個範例 { int *ip = new int; // start of life *ip int &ir = *ip; // start of scope ir, ir bound to *ip delete ip; // end of life *ip here ir = 5; // bad } // end of scope ir 我在 vs2005下 和 g++4.6 下 ir = 5 這行編譯器都不會報錯 不太懂為啥這樣賦值過去不會 segmentfault 小小疑問 感謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.189.230

06/21 12:00, , 1F
編譯器"不報錯",跟"不會segmentfault"是兩回事啊XD
06/21 12:00, 1F

06/21 12:02, , 2F
你這段程式對編譯器來說是"語法正確"的
06/21 12:02, 2F

06/21 12:06, , 3F
編譯器必須忠實反應使用者下的命令,頂多給點警告而已
06/21 12:06, 3F

06/21 12:45, , 4F
那不會segmentfault 只是剛好囉?
06/21 12:45, 4F

06/21 12:47, , 5F
可以看我在 #1DKhEJMu 這篇的推文
06/21 12:47, 5F

06/21 12:47, , 6F
這種寫法就只是剛好房東沒生氣而已 XDDDD
06/21 12:47, 6F

06/21 14:00, , 7F
這段源碼翻成匯編沒什麼困難,編譯器頂多警告,完全沒錯
06/21 14:00, 7F

06/21 15:13, , 8F
compiler會叫才是幸福,不會叫才是痛苦
06/21 15:13, 8F

06/21 15:50, , 9F
不要欺騙 compiler, 它會對你復仇
06/21 15:50, 9F

06/21 15:51, , 10F
沒錯 其實seg也算容易追 麻煩的是 runtime 也毫無訊息
06/21 15:51, 10F

06/21 15:51, , 11F
然後頭就禿了...
06/21 15:51, 11F

06/21 15:51, , 12F
2010不讓你跑囉
06/21 15:51, 12F

06/22 07:47, , 13F
其實編譯器亂做無所謂,因為程式設計師已經弄錯了...
06/22 07:47, 13F

06/22 08:33, , 14F
不會segfault只是因為馬子分手之後還沒被把走而已...
06/22 08:33, 14F
文章代碼(AID): #1Fufm8nc (C_and_CPP)