在用free()函数释放指针内存时为何要将其指针置空

Posted zoutingrong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在用free()函数释放指针内存时为何要将其指针置空相关的知识,希望对你有一定的参考价值。

在通过free()函数释放指针内存之后讲其指针置空,这样可以避免后面的程序对与该指针非法性的判断所造成的程序崩溃问题。释放空间,指针的值并没有改变,无法直接通过指针自身来进行判断空间是否已经被释放,将指针置空有助于判断一个指针所指向的空间已经被释放。

内存泄露:

  例如:int *p = (int *)malloc(sizeof(int)),如果在用p只想其他地址,则原本malloc()分配的地址便找不到了,造成内存泄露的后果。

free(p)后,p是一个非法指针,不可以对他进行访问。为了防止忘记对释放内存后的指针的置空,可以在函数的开头宏定义一个函数

#define free(p)

  if(p)

{

free(p);

p = NULL;

}

以上是关于在用free()函数释放指针内存时为何要将其指针置空的主要内容,如果未能解决你的问题,请参考以下文章

free()的释放是何涵义,是把内容清空还是把指针置为NULL啊,还是其他啥啊。。求指点啊。。

[C]安全释放堆内存

调用释放已存储值的 char 指针时,free() 函数失败

C/C++——指针

C语言free释放内存后为啥指针里的值不变?竟然还可以输出

指针free后还存在吗?