[問題] free的使用方式

看板C_and_CPP (C/C++)作者 (香菇)時間16年前 (2009/07/13 11:07), 編輯推噓4(4011)
留言15則, 5人參與, 最新討論串1/1
建立一條link list之後,在另外宣告一個指標,假設為ptr 然後我用ptr去指這條link list上某node,假設為中間點 之後當我用free(ptr)時,會產生甚麼效果? 是只有ptr指的那個node記憶體回收? 還是ptr之後的node都回收了? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.56.104

07/13 11:18, , 1F
如果是你寫 free() 會想怎麼做這件事?
07/13 11:18, 1F

07/13 12:52, , 2F
應該會發生一個錯誤(靜態變數不能用free釋放)吧 XD
07/13 12:52, 2F

07/13 12:53, , 3F
free(*ptr)才比較像是真正釋放ptr指到的東東
07/13 12:53, 3F

07/13 13:59, , 4F
不是吧... free 就是要給指標呀
07/13 13:59, 4F

07/13 13:59, , 5F
前題要是你的 node 要是 malloc 出來的
07/13 13:59, 5F

07/13 14:12, , 6F
你free掉的是那個ptr指標 而且那要用malloc才有用
07/13 14:12, 6F

07/13 14:49, , 7F
樓上錯誤.... free 掉的是該指標指向的記憶體空間
07/13 14:49, 7F

07/13 14:50, , 8F
給原 post, 一般用途的 free 不可能會去辨識 data structure
07/13 14:50, 8F

07/13 14:50, , 9F
想當然爾沒有整條 link list 都收掉這種事情
07/13 14:50, 9F

07/13 14:51, , 10F
以設計的觀點來看更不會這麼做, 因為如果我只想 free 單個
07/13 14:51, 10F

07/13 14:51, , 11F
不就沒辦法用了 ? 除非你自己多寫一個自己想要的 free
07/13 14:51, 11F

07/13 14:52, , 12F
那麼你想要他有什麼樣的行為, 就自己決定即可 ~
07/13 14:52, 12F

07/13 14:52, , 13F
一起alloc的一起free,你可以看ptr指向的部份alloc的範圍
07/13 14:52, 13F

07/13 16:04, , 14F
唔,我忘了 X(
07/13 16:04, 14F

07/13 22:01, , 15F
恩抱歉 上面是我講錯了
07/13 22:01, 15F
文章代碼(AID): #1AMgKAJD (C_and_CPP)
文章代碼(AID): #1AMgKAJD (C_and_CPP)