看板CompBook
标 题Re : 网际网路四大服务 答客问 (1) - reference and delete
发信站清华资讯(枫桥驿站) (Mon Mar 27 17:52:17 2000)
转信站Ptt!bbs.ee.ntu!freebsd.ntu!netnews.csie.nctu!news.cs.nthu!maple
Re : 网际网路四大服务 答客问 (1) - reference and delete
侯捷
[email protected]
2000.03.27 第一次发表於
清大.枫桥驿站(140.114.87.5).电脑书讯版(Computer/CompBook)
本文将於日後整理於 侯捷网站
侯捷网站:www.jjhou.com
----------------------------------------------------------------
jcwang wrote (2000/03/27) :
>> 针对上述 (1),Effective C++ 的 item6 给了一个忠告:
>> item 6 : "Use delete on pointer members in destructors."
>> 否则会出现 memory leak 问题。
>> [...]
>> 这是 C++ 标准行为。不过一般而言,reference 主要用於
>> 函式的型式参数(formal parameters);一般程式较少使用
>> reference 独立物件。
>
> 侯大哥:
>
> 这是我程式中比较特别的地方。我想过,Stroustrup 为什麽要
> 允许将 reference 用在 class memeber 中,而不只是 formal
> parameters?我的结论是,当该物件需要「参照一个在其生命
> 过程中不会改变,而且一定要有效 (非 NULL) 的成员物件」
> 时,就适合使用 reference member variables。
>
> 在四个伺服器里,我在主程式的回圈中需要将资料送给每一个
> 服务执行绪。这要如何做到呢?为什麽选择将物件以参照的方
> 式传给被呼叫者,又立即将其 delete 掉?
>
> 一般管理参数有两种方式,可用 caller remove 或是 callee
> remove,来决定由谁掌控释放参数所使用的记体空间。在我们
> 的情况下, caller remove 意味着我们必须侦测执行绪的结
> 束,这不是一件单纯的事。所以我采取 callee remove,让
> 执行绪来释放记忆体 (delete),所以才会有使用到 reference
> member variables 的情况。我也可以选择使用 pointer,
> 但如此一来就必须常常去 ASSERT() 该变数的值,确定其不为
> NULL。使用 reference 可省去检查为 NULL 的工作。
侯捷回覆:
我同意你的想法。
-- the end.
--
※ Origin: 枫桥驿站<bbs.cs.nthu.edu.tw> ◆ Mail: [email protected]