[問題] 刪不掉 囧

看板C_and_CPP (C/C++)作者 (大便兔子)時間16年前 (2009/08/25 16:47), 編輯推噓4(4012)
留言16則, 6人參與, 最新討論串1/1
TypeDefine: typedef struct node* ptr; struct node{ int BF; int key; ptr lchild,rchild; }; main裡面: ptr root = new node; root->key = 2; delete(root); if(root) cout<<root->key; 結果: 2 問題: =_=這是...怎麼了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.64.67

08/25 16:56, , 1F
我比較想知道,你delete了後,還期待它會印出什麼?
08/25 16:56, 1F

08/25 16:56, , 2F
你 delete 之後再取用內容,結果是未定義
08/25 16:56, 2F

08/25 16:57, , 3F
我期待他甚麼也不印出@@
08/25 16:57, 3F

08/25 16:57, , 4F
而未定義的意思就是它可能是2、可能是亂數、可能當機
08/25 16:57, 4F

08/25 16:58, , 5F
如果成功刪掉的話if(root)不會過濾掉cout那行嗎?
08/25 16:58, 5F

08/25 16:59, , 6F
delete 的意思是告訴系統 root 所指向的空間可歸還
08/25 16:59, 6F

08/25 16:59, , 7F
並不會去改 root 指向的位置
08/25 16:59, 7F

08/25 17:05, , 8F
在刪除完之後,root不會只向NULL嗎
08/25 17:05, 8F

08/25 17:06, , 9F
delete過的pointer要自己指回NULL, 另外, pointer一定會
08/25 17:06, 9F

08/25 17:07, , 10F
存著一個值代表記憶體位置, 只是合不合法你能不能使用的
08/25 17:07, 10F

08/25 17:08, , 11F
問題, 沒有可能說什麼不印出東西, 只有那個東西有沒有意
08/25 17:08, 11F

08/25 17:08, , 12F
意正不正確而已; 而這應該是寫code自己要注意的, 不是由
08/25 17:08, 12F

08/25 17:08, , 13F
new/delete或malloc/free來幫你注意的:)
08/25 17:08, 13F

08/25 17:17, , 14F
感謝:P大概知道了
08/25 17:17, 14F

08/25 18:50, , 15F
其實我以前也曾有類似的疑惑...XDDDD
08/25 18:50, 15F

08/25 21:12, , 16F
原po是程式女俠~~
08/25 21:12, 16F
文章代碼(AID): #1AawKNjE (C_and_CPP)
文章代碼(AID): #1AawKNjE (C_and_CPP)