c语言链表free函数 c语言 链表操作

数据结构(C语言版)中free函数的意义是什么,比如在单链表中我可不可以这样写:free(q);qfree(q);释放q指针所拥有的资源 , 告诉系统,本程序不再使用该内存地址(free的功能就是这个)
q=q-next;然后继续引用该地址 , 则程序可能会死掉!
C语言中的free函数如何正确使用free只能释放由堆动态申请的空间,但是第一个中p,q两个不同的指针变量指向同一片地址,
free(q);
q = NULL;
后,q和p指向的空间被释放,且q被赋值为NULL,但是此时p变量的值并没有改变,即其值还是原来申请的空间的首地址 。这里注意原来申请的空间已被释放 , 只是p还保留那篇空间的首地址值,所以一般开发中释放空间后 , 要把相关变量赋值为NULL,以防后面会非法访问一个已经释放的空间 。
第二个,释放了 。
C语言 free()函数的使用规则比如
int *a = (int*)malloc (100*sizeof(int));
int *b = a, *c = a + 10;
那么free(b) 和 free(a)是合法c语言链表free函数,他们的工作都是释放申请的a的内存100个int
再如用递归创建链表c语言链表free函数 , 
node* a = (node*)malloc(sizeof(node));
a-next = (node*)malloc(sizeof(node));
... ...
free(a)只释放node的申请内存,a-next不会释放,这样做会造成内存泄漏c语言链表free函数!
free的使用参考
【c语言链表free函数 c语言 链表操作】c语言链表free函数的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言 链表操作、c语言链表free函数的信息别忘了在本站进行查找喔 。

    推荐阅读