正文
c语言free函数的 c语言中的free
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
C语言 free()函数的使用规则
比如
int *a = (int*)malloc (100*sizeof(int));
int *b = a, *c = a + 10;
那么free(b) 和 free(a)是合法,c语言free函数的他们的工作都是释放申请的a的内存100个int
再如用递归创建链表,
node* a = (node*)malloc(sizeof(node));
a-next = (node*)malloc(sizeof(node));
... ...
free(a)只释放node的申请内存,a-next不会释放,这样做会造成内存泄漏c语言free函数的!
free的使用参考
c语言free的作用
malloc 和 free 是在系统的栈上分配空间。
malloc是申请,意思就是告诉系统,我要用一块RAM,给我用了别人就不要用了。
free是释放,意思是告诉系统,给我的这块RAM我用完了,不再用了,系统可以把它干别的了。
free之后,系统还没有拿这块RAM干别的事之前,这块RAM的内容可能是不会变的,依然可以读出原来的内容,因为你的指针a还是指向这块RAM。但要注意,这块RAM已经不属于你了,读一下内容无所谓,如果往里面写就很危险了。
C语言:关于FREE()函数的用法
不可以的。
malloc, alloc, free是c定义的一组内存管理的API函数c语言free函数的,当你调用malloc、alloc分配内存时c语言free函数的,不仅仅是从堆里面分配得到了可用内存,实际上内存管理子系统还会维护了内存列表。你自己定义的指针不会在这个列表中的,所以free会出问题的。
那么,使用new, GlobalAlloc之类的方式分配的内存可不可以使用free呢。我的回答是,尽量不要,大部分情况都会带来风险。这里面涉及new, malloc, GlobalAlloc, HeapAlloc, LocalAlloc,VirtualAlloc等函数的区别。
C语言中的free函数如何正确使用
free只能释放由堆动态申请c语言free函数的的空间c语言free函数的,但是第一个中pc语言free函数的,q两个不同c语言free函数的的指针变量指向同一片地址,
free(q);
q = NULL;
后,q和p指向的空间被释放,且q被赋值为NULL,但是此时p变量的值并没有改变,即其值还是原来申请的空间的首地址。这里注意原来申请的空间已被释放,只是p还保留那篇空间的首地址值,所以一般开发中释放空间后,要把相关变量赋值为NULL,以防后面会非法访问一个已经释放的空间。
第二个,释放c语言free函数的了。
c语言free函数的的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言中的free、c语言free函数的的信息别忘了在本站进行查找喔。