当前位置:首页 » 编程语言 » c语言free怎么用

c语言free怎么用

发布时间: 2022-08-15 20:35:56

c语言:关于FREE()函数的用法

定义的指针不占内存,指针只是一个指向内存(可以由malloc开辟)的东西,free释放的是指针所指向已经开辟好的内存空间,用free释放。不然容易造成内存泄漏!

② 关于C语言中free函数的使用

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

③ c语言中的FREE的用法如题 谢谢了

别听楼上的瞎讲 int a[100][100];是不能被释放的!因为这是固定分配空间而不是动态分配空间! 这样吧,给你个例子 1. void main(){ int a[100]; free(a);//出错,无法释放固定空间。在程序结束后此空间自动释放 } 2. #include <malloc.h> void main(){ int *a; a=(int*)malloc(sizeof(int)*100);//相当于int a[100],只是用动态空间分配 free(a);//成功,释放动态空间 //如果没有上一步,程序结束后不会像1例一样自动释放a的空间!这会造成内存泄露! } 从1、2两例可以看出,free释放的只能是malloc开的空间。 现在来个二维空间的例子 3. #include <malloc.h> void main(){ int **a,i; a=(int**)malloc(sizeof(int)*100); for(i=0;i<100;i++)[ a[i]=(int*)malloc(sizeof(int)*100); //懂了吗?先将a开个100的空间,再将a的每一位开空间。就得到a[100][100]的效果 } //释放时先释放a的所有数 for(i=0;i<100;i++)[ free(a[i]); } //最后释放a free(a); } 话说我们要跟上时代,那用C++呢? 4. #include <iostream> using namespace std; void main(){ int *a,i; a=new int[100]; delete[] a; } 4例是一个很普通的开空间的例子。那么二维呢? 5. #include <iostream> using namespace std; void main(){ int **a,i; a=new int*[100]; for(i=0;i<100;i++){ a[i]=new int[100]; //原理相同,相当于a[100][100] } //释放原理也相同 for(i=0;i<100;i++){ delete[] a[i]; } delete[] a; }

求采纳

④ c语言中 free的用法~

还可以参考
http://hi..com/nidil/blog/item/e205770986fe24af2fddd4d7.html
=============
释放内存 free 函数
需要包含头文件(和 malloc 一样):

#include



#include

函数声明:

void free(void *block);

即: void free(指针变量);

之所以把形参中的指针声明为 void* ,是因为free必须可以释放任意类型的指针,而任意类型的指针都可以转换为void *。

举例:

int* p = (int *) malloc(4);

*p = 100;

free(p); //释放 p 所指的内存空间

或者:

int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间。

……

free(p);

free 不管你的指针指向多大的空间,均可以正确地进行释放,这一点释放比 delete/delete [] 要方便。不过,必须注意,如果你在分配指针时,用的是new或new[],那么抱歉,当你在释放内存时,你并不能图方便而使用free来释放。反过来,你用malloc 分配的内存,也不能用delete/delete[] 来释放。一句话,new/delete、new[]/delete[]、malloc/free 三对均需配套使用,不可混用!

int* p = new int[100];

... ...

free(p); //ERROR! p 是由new 所得。

⑤ C语言 free()函数的使用规则

free(a)和free(b)均可以,但是只能free一次,不能free(a)之后又free(b),那样会出错的。
free(c)也不行,因为c的位置没有保存malloc时的辅助信息(用于free)

第二个问题:
free(a)就是将链表中这一个节点释放了,a->next指向的内存不会释放,但是整个a包括a->next占用的空间都已释放,a->next不能再用了。

热点内容
阴阳师按键脚本 发布:2024-05-05 12:00:33 浏览:758
魔兽查脚本 发布:2024-05-05 11:54:37 浏览:38
sqlserver执行时间 发布:2024-05-05 11:50:31 浏览:648
终端配置账号该如何改密码 发布:2024-05-05 11:24:37 浏览:825
成都存储研发招聘 发布:2024-05-05 11:24:29 浏览:285
电脑服务器名称怎么查找 发布:2024-05-05 10:49:37 浏览:470
电脑连到代理服务器 发布:2024-05-05 10:40:02 浏览:250
华为安卓手机如何投屏到雷克萨斯 发布:2024-05-05 10:37:50 浏览:211
微博上传原图 发布:2024-05-05 10:20:05 浏览:749
服务器换电脑需要什么东西 发布:2024-05-05 09:52:28 浏览:754