[問題] 小問題想請教,關於delete

作者: fu3mo6 (ㄚ龐)   2012-06-07 13:43:58
PA4在自己的Ubuntu上run一直都很正常
今天把它拿去工作站run了卻出現segmentation fault
觀察原因是在delete的部分
當系統已經存有一個graph時,若再執行一次read的話
我的設計是會把原本的graph刪除,然後創一個新的讀它
而graph這個class的destructor寫得很簡單,就只有
graph::~graph(){
delete [] adj_list;
}
就這樣
工作站卻給我double free的segmentation fault
其實把delete [] adj_list;註解掉之後問題就解決了(也就是destructor是空的)
但是有點困惑為什麼會這樣
這樣會不會memory leak啊?
還是說預設就會刪光光,不用自己寫??
作者: djshen (djshen)   2012-06-07 13:50:00
重新compile?
作者: fu3mo6 (ㄚ龐)   2012-06-07 14:16:00
有make clean再make過了
作者: djshen (djshen)   2012-06-07 14:45:00
delete後把adj_list設為0 delete前檢查daj_list是不是0試試
作者: OckhamsRazor (魏格納的友人)   2012-06-07 17:10:00
其實不用檢查 因為delete本身就會檢查指標是否為NULL所以養成好習慣 delete後就設指標為NULL吧
作者: craig08 (小佑)   2012-06-07 17:13:00
delete之後指標要設為0 才不會double free
作者: anfranion (南‧生命的意義是經歷)   2012-06-08 00:00:00
推delete完設成0的好習慣~

Links booklink

Contact Us: admin [ a t ] ucptt.com