free()的释放是何涵义,是把内容清空还是把指针置为NULL啊,还是其他啥啊。。求指点啊。。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了free()的释放是何涵义,是把内容清空还是把指针置为NULL啊,还是其他啥啊。。求指点啊。。相关的知识,希望对你有一定的参考价值。
free ()释放的是指针指向的内存。即把指针指向的那块内存交还给操作系统而指针本身仍存在,因为指针是一个变量,只
有程序结束时才被销毁,只不过现在指针指向的内容是无用的,
未定义的。因此,释放内存后通常把指针指向 NULL,防止指针在
后面不小心又被引用。
供参考! 参考技术A 是把参数指针指向的地址空间重新标记为“空闲,可用”状态,以便被其它用户使用。
在用free()函数释放指针内存时为何要将其指针置空
在通过free()函数释放指针内存之后讲其指针置空,这样可以避免后面的程序对与该指针非法性的判断所造成的程序崩溃问题。释放空间,指针的值并没有改变,无法直接通过指针自身来进行判断空间是否已经被释放,将指针置空有助于判断一个指针所指向的空间已经被释放。
内存泄露:
例如:int *p = (int *)malloc(sizeof(int)),如果在用p只想其他地址,则原本malloc()分配的地址便找不到了,造成内存泄露的后果。
free(p)后,p是一个非法指针,不可以对他进行访问。为了防止忘记对释放内存后的指针的置空,可以在函数的开头宏定义一个函数
#define free(p)
if(p)
{
free(p);
p = NULL;
}
以上是关于free()的释放是何涵义,是把内容清空还是把指针置为NULL啊,还是其他啥啊。。求指点啊。。的主要内容,如果未能解决你的问题,请参考以下文章
请问C语言free(p)释放p所指向的动态内存后p指向哪?是NULL还是随机还是啥呢?