[问题] static 变量在function 中 与 memory

楼主: YOUHAVE (YOU HAVE I HAVE)   2014-05-31 22:25:10
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
void foo(){
static int x;
}
int main ()
{
foo();
return 0;
}
问题是这样的。 在foo function 中,static 变量x ,会被放在
memory 的 data section 中(或是有些人说的golable 区域中)。
问题: foo() return 后,从stack 里移除之后。
1. 就我知道,static 变量x ,仍然还在data section 里面。
x 位址仍然有效。
2. 如果上面的想法是对的。 那这样如果一个大程式,
我看很多fucntion 都用static 变量在做事。这样不是data section 越长越大,
没人清那些垃圾?这样是对的吗?
请教了。
谢谢
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):
作者: tjjh89017 (伊达政宗)   2014-05-31 22:54:00
data section在执行的时候就是已经固定了,不会变多或变少((更正compile time
楼主: YOUHAVE (YOU HAVE I HAVE)   2014-05-31 22:59:00
是的,这个我了解。我的意思是说,那这样一是有一堆变量放在那边,蛮浪费空间的吗? 好像也没看过有人在回收他们所以,这样的行为,是正本来就这样的䁖? 感谢。
作者: tjjh89017 (伊达政宗)   2014-05-31 23:08:00
本来就是这样吧
楼主: YOUHAVE (YOU HAVE I HAVE)   2014-05-31 23:35:00
恩 谢
作者: EdisonX (卡卡兽)   2014-06-01 07:01:00
程式管理stack是用一个指标,所谓的清除只是将指标移动。
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-06-01 12:42:00
现在写程式浪费内存的地方多的咧
楼主: YOUHAVE (YOU HAVE I HAVE)   2014-06-01 16:04:00
噗噗
作者: witchang   2014-06-08 08:41:00
foo() return 除了rpc跟fp 以外没有其他东西被释放, 通常用static变量会一直被用且参考旧值,所以不会是垃圾空间

Links booklink

Contact Us: admin [ a t ] ucptt.com