Archive for April 30th, 2010

窘窘的*node


30 Apr

上午调试一程序。对如下现象百思不得其解:
node为自定义的struct 且里面有两个成员node *L,node *R
奇怪的是经过几次new后,有一次new出来的地址和以前的一样!难道系统糊涂了?
当然最后还是我糊涂 我在进行树添加节点时使用了一个临时的node tmp
jk神牛的一句话惊醒梦中人:“tmp析构怎么办”
我突然发现我写的node类的析构是递归进行的。而对于tmp的L和R,我只是拿来做个临时储存空间
这样,本来tmp在执行完了短暂的中转作用后就该直接消失,而由于它残余的L和R,导致析构函数去delete树上本不该delete的节点,然后树上实际没有变化 而是系统认为他们已经不存在了,所以下次分到相同的地址是显然的

Teddy

Studies,OI and Love