查看单个帖子
  #72 (permalink)  
旧 2008-03-05
ajoo ajoo 当前离线
高级会员
 
注册日期: 2002-09-15
帖子: 2,531
ajoo 正向着好的方向发展
默认 回复: 请教各位大大关于动态内存管理的问题……

引用:
作者: sjinny 查看帖子
手边没有典型的例子。我这么说吧:
在C里,花括号是对生命期的一种表达符号,无论是函数的,还是if、for的,或者单独的花括号对,它们都表达了一种嵌套的生命期。
一个极端的例子:一个函数里的内部变量是不会泄露到外面的,所以使用这个函数时要关注的仅仅是它的接口。但是如果没有用花括号来说明那些内部变量的生命期,那么意味着它们是可能泄漏到函数外的。虽然在外界操纵函数的内部变量是不好的,但是在没有明确限制的情况下,一个设计不好的接口很可能就会把内部变量泄漏出去,特别是类的成员函数,这就破坏了封装性。而函数内部的花括号对,其实也是类似于函数的微观模块。


想了半天没想出什么例子,毕竟还没看过一点显式生命期控制/描述都没有的语言……

我那段话的意思只是说:应该赋予程序员尽量强大的表达工具,机器分析只是起弥补的作用。如果不要求程序员给出丰富的描述信息,然后再让程序来猜,那就不好了。
各种自动化技术是在帮助程序员,但是如果开始替代程序员,那就走向反面了。一直到现在,语言里仍然保留了goto。一直到现在C++也仍然保留了内嵌汇编的能力。
你觉得下面的c代码中,i这个栈变量一定是在花括号结束的地方才失效的?
代码:
{ int i = 1; int j = i; cout << j; }
不熟悉寄存器分配算法吧?
回复时引用此帖