查看单个帖子
  #101 (permalink)  
旧 2008-03-09
cat cat 当前离线
高级会员
 
注册日期: 2003-11-06
帖子: 1,563
文章: 6
cat 正向着好的方向发展
默认 回复: 请教各位大大关于动态内存管理的问题……

嘿嘿,我不好事。
引用:
作者: sjinny
我说过了,using貌似提供的就是栈的功能,只不过语法上还不如栈简洁。
换个语言,语法上一模一样 (C++/CLI) 只是内存那个时候没有释放而已。

个人觉得资源管理,大多数也就是程序员需要指定什么时候申请什么时候释放,和程序员不需要指定什么时候申请和释放。后者显然方便,而且在后者的性能或者坏处不大的情况下会被认为是比较先进的。

对于需要指定什么时候释放的,stack/FIFO/using只能cover一些情况。还有其他情况它的生命周期是动态的,就需要分析生命周期然后去手动调用类似alloc/free的函数。这个比起完全不用管的模式要麻烦也比较容易出错。

完全不用管的模式,比如内存和CPU. 内存有gc, CPU有OS. 都不需要你写代码控制。对于CPU完全交给OS我们已经很习惯了,就是内存好像还有不少人还当宝贝一样……

现在如果把那些general的需要手动回收的资源管理全都绑定到内存上,然后放弃自动内存管理,实际上就使得内存管理重新回到一种很可能出错的状态。但就像ajoo前面说的一样,内存管理对于进程是非常重要的,不容有错。其他资源有错,你还可能完全释放后重新初始化来恢复,但内存如果access violation之类的,OS扔给你个dump就把进程杀了。所以内存管理处错的代价和其他资源是不一样的。绑定起来也没看到其他的必要性。

如果抛弃了这个绑定,stack语义的FIFO我也一直用,有啥资源的使用都尽量往上靠。但有的时候硬靠上去的代码很难维护。

引用:
作者: sjinny
我假设任何资源的生命期都只会有一次开始和一次结束。如果不符合这个假设,那么我觉得完全可以把那种生命期分解为这种结构。
这么机械的事情,编译器/执行环境/类库来做更合适。

此帖于 2008-03-09 06:26 PM 被 cat 编辑.
回复时引用此帖