引用:
作者: sjinny 我还没有足够的经验,不过根据我目前的了解,我对某些技术持比较保守的态度。
不过,不管编译器怎么优化,花括号里的那些变量是不会泄露到外面去的。至少在编写代码时是可以这么认为的吧。 |
看你怎么定义“泄露”了。如果说不会在花括号结束后被外界感知,用gc也不会:
代码:
{
Integer i = new Integer(1);
Integer j = i;
System.out.println(i);
}
实际上,用c的话,反而可能被外界感知:
代码:
int* p;
{
int i = 1;
p = &i;
}
而如果定义为它占用的空间必然确定性地在花括号结束的瞬间回收的话,那么即使c/c++也不这么保证的。编译器完全有自由等到函数退出再清理堆栈。