作者dpqb10 (香菇)
看板C_and_CPP
標題[問題] free的使用方式
時間Mon Jul 13 11:07:53 2009
建立一條link list之後,在另外宣告一個指標,假設為ptr
然後我用ptr去指這條link list上某node,假設為中間點
之後當我用free(ptr)時,會產生甚麼效果?
是只有ptr指的那個node記憶體回收?
還是ptr之後的node都回收了?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.56.104
1F:→ Ebergies:如果是你寫 free() 會想怎麼做這件事? 07/13 11:18
2F:→ MOONRAKER:應該會發生一個錯誤(靜態變數不能用free釋放)吧 XD 07/13 12:52
3F:→ MOONRAKER:free(*ptr)才比較像是真正釋放ptr指到的東東 07/13 12:53
4F:推 ledia:不是吧... free 就是要給指標呀 07/13 13:59
5F:→ ledia:前題要是你的 node 要是 malloc 出來的 07/13 13:59
6F:推 nowar100:你free掉的是那個ptr指標 而且那要用malloc才有用 07/13 14:12
7F:推 ledia:樓上錯誤.... free 掉的是該指標指向的記憶體空間 07/13 14:49
8F:→ ledia:給原 post, 一般用途的 free 不可能會去辨識 data structure 07/13 14:50
9F:→ ledia:想當然爾沒有整條 link list 都收掉這種事情 07/13 14:50
10F:→ ledia:以設計的觀點來看更不會這麼做, 因為如果我只想 free 單個 07/13 14:51
11F:→ ledia:不就沒辦法用了 ? 除非你自己多寫一個自己想要的 free 07/13 14:51
12F:→ ledia:那麼你想要他有什麼樣的行為, 就自己決定即可 ~ 07/13 14:52
13F:推 snowlike:一起alloc的一起free,你可以看ptr指向的部份alloc的範圍 07/13 14:52
14F:→ MOONRAKER:唔,我忘了 X( 07/13 16:04
15F:→ nowar100:恩抱歉 上面是我講錯了 07/13 22:01