当前位置:文档之家› C语言内存释放的两个步骤

C语言内存释放的两个步骤

首先声明一个指针变量*p,那么free(p);与p=NULL;这两个语句有什么区别?
有区别,free(p);是将p所指向的空间释放掉,这个空间可以是任何类型的变量或者数组。

而p=NULL;是将p自身的值赋空,其实相当于释放自身。

例如数据结构中销毁顺序表的算法是这样的
void Destroy_SeqList(PSeqList*PL);
{
free(*PL);
*PL=NULL;
}
其中PL是顺序表的指针
调用语句为
Destroy_SeqList(&PL);
这样销毁才彻底。

否则的话不但是不彻底,有些操作中还会出错。

例如销毁后不小心再次调用到了PL,系统仍然能通过PL找到整个顺序表,再次对顺序表进行操作,这样就会出错。

相关主题