C语言函数
头文件:malloc.h
作用:释放malloc()函数给指针变量分配的内存空间的函数
使用后该指针变量一定要重新指向NULL,防止野指针出现,有效 规避误 *** 作。
中文名:free()
属性:C语言函数
头文件:malloc.h
作用:防止野指针出现
分享
简介
函数名: free
功 能: 与malloc()函数配对使用,释放malloc函数申请的动态内存。(另:对于free(p)这句语句,如果p 是NULL 指针,那么free 对p 无论 *** 作多少次都不会出问题。如果p 不是NULL 指针,那么free 对p连续 *** 作两次就会导致程序运行错误。)
用 法: void free(void *ptr)
free函数的用法释放ptr指向的存储空间。被释放的空间通常被送入可用存储区池,以后可在调用malloc、realloc以及calloc函数来再分配。
free 不管指针指向多大的空间,均可以正确地进行释放,这一点释放比 delete/delete [] 要方便。如在分配指针时,用的是new或new[]。
在释放内存时,并不能图方便而使用free来释放。反过来,用malloc 分配的内存,也不能用delete/delete[]来释放。
举例:
int* p = (int *) malloc(4)
*p = 100
free(p)//释放 p 所指的内存空间
或者:
int* p = (int *) malloc ( sizeof(int) * 100 )//分配可以放得下100个整数的内存空间。
……
free(p)
扩展资料
1、free是和malloc、realloc或者calloc函数成对出现的,来保证动态分配的空间及时释放。
2、一块动态申请的内存用free释放一次就够。
关于使用分配的内存,调用free后的内存状态解释如下:
1.当调用free来释放分配的内存时,它表明该内存可以被其他人使用,也就是说,它可以在其他地方调用malloc之后分配给内存
2.对于释放后内存中的数据数量,我们只能认为是脏数据;换句话说,这部分数据可能存在并保持原始值,也可能被清空或修改为其他值;
这表明有许多可能的情况下,因此,内存被释放后,除了分配指针赋值的空,也要小心不要参考这部分的内存,不要试图得到这部分的价值,这些已经是非法的。
扩展资料:
在程序中使用自由释放,否则内存将不会被释放。
C将不会被释放。所谓的动态内存是malloc系列函数所请求的内存,只有在程序中使用free时才会释放。
标准库中malloc函数的实现原理。要理解malloc的内存存储结构,与全局变量不同,malloc不在编译器编译时分配内存空间,而只在调用malloc函数时才分配内存空间。有时我在中间调用free函数来释放空间。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)