当我们创建了一个链表后(或者树,图都是一样的)。我们做了很多Node* p = new Node(),p指针本身是可以在离开作用域时回收掉的,但是p所指向的内存块不行(这块内存是分配在堆上的)。我们在创建链表时并不知道什么时候不需要这个链表了,因而就不知道在什么地方delete。
解决方法可以这样来做:在Node的析构函数中做这样的处理:
~Node()
{
if(pNext != NULL)
delete pNext;
}
这样,只需要对指向头结点的指针delete,整个链表都会被释放掉