[問題] error handling

看板LinuxDev作者 (rezod)時間18年前 (2006/12/18 20:32), 編輯推噓5(506)
留言11則, 5人參與, 最新討論串1/1
這個問題真的困擾我很久 最麻煩的莫過於當你已經malloc()了一大堆東西 卻因為某個原因必須跳出來 照原先為正常情況設計的free()的順序清掉 又可能因為前面執行不完全而造成一大堆的segfault 或是double free 真是想不透該怎麼辦啊啊啊啊啊 -- The inherent vice of capitalism is the unequal sharing of blessings; the inherent virtue of socialism is the equal sharing of misery. -- Churchill -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.126.35.92

12/19 00:15, , 1F
針對避免 double free, 一般常用
12/19 00:15, 1F

12/19 00:16, , 2F
if (ptr)
12/19 00:16, 2F

12/19 00:16, , 3F
{
12/19 00:16, 3F

12/19 00:16, , 4F
free(ptr);
12/19 00:16, 4F

12/19 00:17, , 5F
ptr = NULL;
12/19 00:17, 5F

12/19 00:17, , 6F
}
12/19 00:17, 6F

12/19 00:48, , 7F
參考前面的 valgrind 來 debug 試試..
12/19 00:48, 7F

12/19 01:20, , 8F
linux kernel裡很喜歡用goto..喜歡用就學吧
12/19 01:20, 8F

12/19 06:52, , 9F
改用 memory pool,或gc library
12/19 06:52, 9F

12/19 12:35, , 10F
kernel 用 goto 應該一部份為了 downsize 吧..
12/19 12:35, 10F

12/19 17:59, , 11F
對耶 memory pool竟然有這種妙處 真是太強啦!
12/19 17:59, 11F
文章代碼(AID): #15XefJqZ (LinuxDev)
文章代碼(AID): #15XefJqZ (LinuxDev)