猿问

关于链表动态分配问题

假设我定义了一个能构建动态链表的函数,它能返回一个头指针,我在主函数中返回值赋给同类型指针。 为什么在主函数中能输出所有节点?函数调用后,分配的动态存储空间不是没有了吗。求解释,谢谢
DOUBLE_l
浏览 1751回答 2
2回答

新_day_day_new

c中全局变量是存放在栈中,在程序结束时释放存储空间。函数中的形式参数和非static修饰的参数都是在动态存储区中。它们在函数开始是被分配空间结束时释放其空间。而用malloc等函数分配的空间由用户需要时调用malloc动态分配并且由用户自己释放或者在整个程序结束时释放。所以说虽然你是在函数中申请的空间但是不会随函数结束而导致存储空间被释放。因为你没有在函数里人为释放。所以你返回的头指针依然指向一个存在的空间,在主函数里还能输出节点。

望远

这是堆栈空间分配的区别:   1、栈:由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;   2、堆: 一般由程序员申请内存,也要由程序员释放,而通过malloc申请的内存就属于堆内存。
随时随地看视频慕课网APP
我要回答