在释放内存之时,不仅仅是将该块内存进行释放,还要将指向该块内存的指针置为NULL。如果不置为NULL,下次继续使用该指针时会出现问题。具体看示例。在下面的示例中,如果没有处理野指针的那句话,最后链表输出的结果会被输入的多一位,原因就在于尾插节点之后虽然释放了最后一个无效节点的内存,但却没有将无效节点的前一个节点的next指针重置为NULL。
总之一句话,free或者delete只是将指针指向的内存进行释放,却并没有对指针做任何操作。
#include <iostream>
using namespace std;
int main()
{
int *p=new int;
if (p==NULL)
{
//判断指针p是不是空指针,如果是空指针,那么程序在这里就应该报错
//报错的方法有很多,比如说返回一个ERROR值:
//return ERROR;
}
//判断了操作成功之后我们才能进行一系列的操作
//...
//用完指针p之后,一定要将其删掉。这样可以杜绝野指针的存在
delete p;
//删除指针p之后,一定要加上下面这句话,免得成为野指针
p=NULL;
}
struct node
{
stri