Re : 網際網路四大服務 答客問 (1) - reference …
Re : 網際網路四大服務 答客問 (1) - reference and delete
侯捷 jjhou@ccca.nctu.edu.tw
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: jjhou@ccca.nctu.edu.tw
CompBook 近期熱門文章
PTT數位生活區 即時熱門文章