[问题] 小问题想请教,关于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