楼主:
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):
data section在执行的时候就是已经固定了,不会变多或变少((更正compile time
楼主: YOUHAVE (YOU HAVE I HAVE) 2014-05-31 22:59:00
是的,这个我了解。我的意思是说,那这样一是有一堆变量放在那边,蛮浪费空间的吗? 好像也没看过有人在回收他们所以,这样的行为,是正本来就这样的䁖? 感谢。
楼主: YOUHAVE (YOU HAVE I HAVE) 2014-05-31 23:35:00
恩 谢
作者:
EdisonX (卡卡兽)
2014-06-01 07:01:00程式管理stack是用一个指标,所谓的清除只是将指标移动。
楼主: YOUHAVE (YOU HAVE I HAVE) 2014-06-01 16:04:00
噗噗
作者: witchang 2014-06-08 08:41:00
foo() return 除了rpc跟fp 以外没有其他东西被释放, 通常用static变量会一直被用且参考旧值,所以不会是垃圾空间