永发信息网

c语言局部变量会被回收吗?

答案:1  悬赏:0  手机版
解决时间 2021-11-18 18:55
  • 提问者网友:愿为果
  • 2021-11-18 09:19
c语言局部变量会被回收吗?
最佳答案
  • 五星知识达人网友:鸠书
  • 2021-11-18 09:41
局部变量 肯定会被回收的,当然也不会保留。要保留传递的局部变量,需要在函数内部手动转存到全局变量 或者 静态变量,换句话说,全局变量 和 静态变量 是可以保留的。追问那为什么第二次无参数调用的时候变量值仍然存在?这是变量指向的地址没有改变吗?怎样查看变量名所在的地址?...怎么看查看是否被回收?请闻回收是在该程序结束时回收还是函数调用结束时?程序未结束,局部变量会一直存在吗?请问在子函数函数内声明的变量与在子函数参数内声明的变量一样吗?追答回收并不意味着重新初始化。回收是把之前用过,现在不用的,拿来重新分配。重新分配的变量,值是随机的,重新分配也不意味着初始化。事实上,C语言写的程序漏洞经常由变量没有正确的初始化而导致。
C语言调用,局部变量的分配有一定的规则,假设你在一个函数中用过一个变量,在局部变量中分配,你给它一个值,然后你不用了。紧接着,到另一个函数中重新定义一个变量,因为没有初始化,这个变量有一个随机的值,这个随机的值,极有可能是之前的值。
以上是理论上的讨论,实际运行时,局部变量一般是在“栈”上分配的,少量的局部变量可能直接使用寄存器。子函数声明的参数变量,经常就是放在寄存器中,除了有调用程序传过来的初值,与普通的局部变量没有区别。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯