首页 > 资讯 > 知识 > free函数,c语言free函数

free函数,c语言free函数

来源:整理 时间:2025-02-12 14:52:47 编辑:智能门户 手机版

1,c语言free函数

因为free函数仅仅是告诉操作系统,这一块内存被释放了,可以用来作其它用途。但是,由于你没有重新对这块内存进行写操作,所以内存中的变量数值并没有发生变化。所以输出值不变。 通常建议,将这个p用完了也置NULL

c语言free函数

2,c 语言free函数用法

free()释放已分配内存的函数 原形:void free(void *block) 功能:释放由calloc、malloc、realloc函数调用所分配的内存。 头文件:stdlib.h、alloc.h 所以你上面所做的和没加free(p)是一样的额

c 语言free函数用法

3,c语言free 函数

如果内存管理做的好的话,你只能释放你申请的地址,否则不释放。也就是说free(m+10); 和free(m-1);代码无效其实什么都没有释放
因为free函数仅仅是告诉操作系统,这一块内存被释放了,可以用来作其它用途。但是,由于你没有重新对这块内存进行写操作,所以内存中的变量数值并没有发生变化。所以输出值不变。通常建议,将这个p用完了也置null
malloc在堆上申请的内存空间,申请多大free就释放多大。这里,free(m+10),不是malloc申请的空间free能释放吗?10是个未知

c语言free 函数

4,c 语言中的free 函数 用法

不能。FREE不能依靠单纯的指针去释放。 你去看看BMP文件的结构,看看很多的程序的结构,他们的结构体中都会存有数据的大小,而且因为面对的是数据流,所以大小往往被放在最开头。 同样的,你MALLOC(10) ,实际上一定会大于10,它要在内部去存储开辟内存的大小的数据,依次来决定释放的字节。 看见p - 2 的数值了吗?它就是14:10个字节的MALLOC,4字节是大小数据单元。 FREE就是根据那个数值才知道到底释放多少的。
free只要传入需要释放的指针就好了,上面的写法从函数使用的角度来讲没问题,不过void只是表示函数是无返回类型的,不能用来声明变量吧。当然malloc函数使用时最好前面强制转换为相应类型的指针例如(int *)malloc(sizeof(int));
完全正确。 只需注意产生野指针就好了。

5,C语言关于FREE函数的用法

不可以的。malloc, alloc, free是c定义的一组内存管理的API函数,当你调用malloc、alloc分配内存时,不仅仅是从堆里面分配得到了可用内存,实际上内存管理子系统还会维护了内存列表。你自己定义的指针不会在这个列表中的,所以free会出问题的。那么,使用new, GlobalAlloc之类的方式分配的内存可不可以使用free呢。我的回答是,尽量不要,大部分情况都会带来风险。这里面涉及new, malloc, GlobalAlloc, HeapAlloc, LocalAlloc,VirtualAlloc等函数的区别。
如果你的指针指向某个内存空间,当然可以使用free释放,但如果你的指针什么都没有指,那释放什么呢
C语言中,free可以释放calloc, malloc, realloc动态分配的空间。 首先说明一下,你要释放的不是你定义的指针,而是你定义的指针指向的空间。 至于你定义的普通指针是不是可以通过free释放,这个要看情况。如果你定义的指针指向动态分配的地址空间,则可以使用free释放指针指向的这段空间;否则,就不能使用free释放指针指向的空间。下面举两个例子:例1:char *p = NULL; p = (char*)malloc(1024); if (p != NULL) free(p);例2:char *p = NULL; char buf[1024]; p = (char*)buf; free(p);其中,例1是对的,例2是错误的。
定义的指针不占内存,指针只是一个指向内存(可以由malloc开辟)的东西,free释放的是指针所指向已经开辟好的内存空间,用free释放。不然容易造成内存泄漏!
free()不仅仅只能对malloc()分配过空间的才能free。free()释放的是堆内存,申请堆内存的函数不止malloc函数一个。另外,指针只是只向某个内存的地址,能不能被free,完全取决于指向的内存是不是堆内存,如果不是堆内存,就不可以free

6,c语言中 free的用法

malloc用来动态申请内存空间,而free用来释放malloc申请的空间。如: struct int a; int b; }node; main() node *lnode; lnode->a=33; lnode->b=99; lnode=(node*)malloc(sizeof(node)); printf("a=%d b=%d",lnode->a,lnode->b); free(lnode); return 0; }
free(fp)//fp为你定义的文件指针
不一定用来释放malloc开辟的空间,释放其他的指针空间也可以
free函数的原型是:void free(void *p)其作用是释放由p指向的内存区。
还可以参考http://hi.baidu.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 所得。
文章TAG:free函数c语言语言free函数

最近更新

  • 安全地毯安全地毯

    安全技术参数地毯Safety地毯,安装时应注意哪些问题安全地毯Safety地毯是一种压敏开关保护装置,一般安装在机械制造加工领域存在安全隐患的工作区域。安全地毯又称安全地毯开关,工业安全地.....

    知识 日期:2025-02-12

  • 硬件diy,电脑硬件DIY硬件diy,电脑硬件DIY

    电脑硬件DIY2,电脑维修要怎么学3,电脑硬件DIY是什么意思4,电脑硬件DIY安装前应该注意些什么5,什么是DIY配置6,电脑硬件DIY是什么意思1,电脑硬件DIY一般设置成光驱启动之后,电脑会首先搜索光驱.....

    知识 日期:2025-02-12

  • 腾威自动化科技有限公司,江浙沪有潜力的自动化公司有哪些?腾威自动化科技有限公司,江浙沪有潜力的自动化公司有哪些?

    江浙沪的自动化公司有:长园深瑞继保自动化有限公司、深圳厉安德自动化设备有限公司、深圳星河自动化有限公司,江浙沪有哪些有潜力的自动化公司?国内自动变速器龙头企业有蓝带科技。以下.....

    知识 日期:2025-02-12

  • 苹果无线充苹果无线充

    苹果How无线充电1。什么是无线充电技术?苹果如何打开手机无线充电苹果打开手机无线充电方法有四个步骤,苹果11支持无线收费苹果11支持无线收费,苹果无线充电功能不需要手动开启,以苹果11为.....

    知识 日期:2025-02-12

  • 自动化蔬菜生产设备,农业寒冷季节生产茄果蔬菜设施有哪些?自动化蔬菜生产设备,农业寒冷季节生产茄果蔬菜设施有哪些?

    蔬菜配送需要什么设备?蔬菜配送需要信息处理设备、接收设备、仓储设备、理货设备和蔬菜保鲜冷库。然而,由于我国保护地种植生产领域缺乏科学性、标准化和流程化,蔬菜自动移栽机的开发难度.....

    知识 日期:2025-02-12

  • plc电气自动化技术就业及前景,专科电气自动化专业就业方向及前景plc电气自动化技术就业及前景,专科电气自动化专业就业方向及前景

    电气工程及其自动化-4前景怎么样?电气工科及其自动化专科就业前景怎么样?电气自动化这个专业怎么样就业前景?从就业、电气自动化就业前景的现状来看,印象非常深刻。电气自动化技术专业就业.....

    知识 日期:2025-02-12

  • 电脑思维导图软件,学生用的思维导图软件有吗电脑思维导图软件,学生用的思维导图软件有吗

    学生用的思维导图软件有吗2,MindMapper16怎么注册3,除了XMind以外Mac下还有哪些好用的Mindmap相关软件4,mindmanager怎么破解5,用什么格式绘思维导图6,mac下比较好的思维导图工具有哪些1,学.....

    知识 日期:2025-02-12

  • 电脑自动被路由器限速吗,路由器怎么设置才能自动限速?电脑自动被路由器限速吗,路由器怎么设置才能自动限速?

    路由器会限速吗?问题一:路由器会自动限制网速吗?路由器会自动限速吗?如果没有设置,路由器不会自动限制速度。我的电脑通过IP地址被路由器限制,为什么路由器总是自己限速?重置路由器,如何检查.....

    知识 日期:2025-02-12