关于C语言free函数的问题? c语言free函数头文件
更新时间:2021-09-18 19:02:43 • 作者:BEVERLY •阅读 5446
c 语言中的free 函数 用法
不能。FREE不能依靠单纯的指针去释放。
你去看看BMP文件的结构,看看很多的程序的结构,他们的结构体中都会存有数据的大小,而且因为面对的是数据流,所以大小往往被放在最开头。
同样的,你MALLOC(10) ,实际上一定会大于10,它要在内部去存储开辟内存的大小的数据,依次来决定释放的字节。
看见p - 2 的数值了吗?它就是14:10个字节的MALLOC,4字节是大小数据单元。
FREE就是根据那个数值才知道到底释放多少的。
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;
}
数据结构(C语言版)中free函数的意义是什么,比如在单链表中我可不可以这样写:free(q);q
free(q); 释放q指针所拥有的资源,告诉系统,本程序不再使用该内存地址(free的功能就是这个)
q=q->next; 然后继续引用该地址,则程序可能会死掉!
c语言free的作用
malloc 和 free 是在系统的栈上分配空间。
malloc是申请,意思就是告诉系统,我要用一块RAM,给我用了别人就不要用了。
free是释放,意思是告诉系统,给我的这块RAM我用完了,不再用了,系统可以把它干别的了。
free之后,系统还没有拿这块RAM干别的事之前,这块RAM的内容可能是不会变的,依然可以读出原来的内容,因为你的指针a还是指向这块RAM。但要注意,这块RAM已经不属于你了,读一下内容无所谓,如果往里面写就很危险了。