free函数的用法!!c语言,急急急急急急!

供稿:hz-xin.com     日期:2025-01-18
C语言中free函数的用法

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(*add(a,b));显然是写错了,应该是free(add(a,b));才对。改后从原理到语法都是正确的,是完全合法有效的。但为了释放内存,要调用两次自定义函数add这种操作值得吗?回答肯定是否定的;再说调用两次自定义函数就进行了两次malloc操作,释放的只是第二次调用申请的内存,第一次调用时申请的内存并没有释放,所以还是在主调函数中用一个指针变量接收的好,不然是有所谓内存泄漏的。

free(str)释放指针所指向的空间,但str不会自动指向NULL,str的值不会变,他还是指向那块内存,只不过那块内存现在已经不归他使用了。你之所以还能使用strcp(str, "hello"); 向这块内存继续写入东西,那完全是由于你的运气,系统随时有可能将这块空间分配给别的程序,从而导致访问错误。

free(str);释放了指针原来所指向的内存空间,与此同时,str指向了NULL
即str = NULL,因此把函数调用strcpy(str, "world"); 中的 world改为很长的字符串都能输出,这也就相当于开始时直接给str赋值:
char *str = "……";

**********************************************************************
《C语言参考手册》第五版 机械工业出版社 第16章通用函数 291页
**********************************************************************

这里只是把指针去除,原来分配的空间还在

c语言错误 跪求!!!程序总是出现“,expected”的错误!
C\/C++都是区分大小写的;include "stdio.h"include "malloc.h"typedef char DataType;typedef struct TNODE { DataType data;struct TNODE *lchild,*rchild;} TNODE; \/*这里*\/ define LEN sizeof(struct TNODE)TNODE *creatree(TNODE *t){ char c;c=getchar();if(c=='.'){ t=NULL;...

请教关于C语言的命令行参数 echo程序是什么?
即当我们输入echo hellow, world的时候,main函数接收到3个参数,echo,hellow,和world,这个时候argc就等于3,argv[0]是echo,argv[1]是hellow,,argv[2]world。3、估计楼主疑惑的就是可执行程序的名字为什么也是一个参数,这个是C语言的规范,记住就行了哈。

C语言编程为什么弹不出黑框来,只是显示这串英语???开发环境Visual C++...
程序没有编译通过,所以不会出调试窗口 错误信息如下:C:\\Documents and Settings\\ree\\桌面\\c.c(20) : warning C4013: 'calcualte' undefined; assuming extern returning int 这一句告诉你,calcualte没有定义(你把单词写错了--calculate)C:\\Documents and Settings\\ree\\桌面\\c.c(23) : error ...