[問題] 為什麼new過的指標delete後還印的出值

看板C_and_CPP (C/C++)作者 (SaoAn)時間14年前 (2011/08/30 00:40), 編輯推噓1(1015)
留言16則, 6人參與, 最新討論串1/1
小弟有個很基本的問題想請教大家 int *a=new int[2]; a[0]=10; a[1]=11; delete [] a; cout << a[0] << " " << a[1] << endl; cout << *a << " " << *(a+1) << endl; 執行結果: 10 11 0 11 問題一: 為什麼a都delete掉了還印的出東西? 問題二: 為什麼a[0]和*a結果不一樣? 我一直以為這兩個寫法是一樣的意思 後來我又做了一些測試, 我在delete [] a 前一行加上int *b=a; 最後改輸出cout << b[0] << " " << b[1] << endl; 執行結果 0 11 結果又更加讓我迷惑了, 請各位導正我的觀念, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.54.5.185

08/30 00:43, , 1F
你抄了住址在紙上, 房子倒了你住址還在
08/30 00:43, 1F

08/30 00:43, , 2F
你跟旅館租了房間放東西,退租了但東西還在
08/30 00:43, 2F

08/30 00:44, , 3F
delete之後的空間有可能閒置, 或是被其他人拿去用, 所
08/30 00:44, 3F

08/30 00:45, , 4F
以就算a[0]、*a參考到的是同一塊空間, 不同時間去看值
08/30 00:45, 4F

08/30 00:45, , 5F
不一定恆等
08/30 00:45, 5F

08/30 00:47, , 6F
delete之後, 指標要設為 Null.
08/30 00:47, 6F

08/30 00:47, , 7F
承2F,但旅館把房間給其它房客後,你想再進入拿東西的話
08/30 00:47, 7F

08/30 00:47, , 8F
可能會被告非法侵入唷XD
08/30 00:47, 8F

08/30 00:48, , 9F
就像是你搬家了卻不去變更戶籍地址,害郵差精神錯亂了.
08/30 00:48, 9F

08/30 00:49, , 10F
還是聽james732的推文好了 ORZ
08/30 00:49, 10F

08/30 00:55, , 11F
[新書] 用例子學動態記憶體配置
08/30 00:55, 11F

08/30 00:56, , 12F
小弟大概懂了, 感謝各位的解答
08/30 00:56, 12F

08/30 01:34, , 13F
懂了嗎?那我就不用回文囉。XD (繼續戰電影板)
08/30 01:34, 13F

08/30 02:11, , 14F
可是我想看精美解說長知識XD
08/30 02:11, 14F

08/30 02:12, , 15F
精美圖的話要找板主或板標 XDDD
08/30 02:12, 15F

08/30 09:33, , 16F
james732是不是怕再當版標,所以都躲在電影版
08/30 09:33, 16F
文章代碼(AID): #1EMy3lO9 (C_and_CPP)
文章代碼(AID): #1EMy3lO9 (C_and_CPP)