国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Effective C++ 第八條Prevent exception from leaving destructors.

2023-01-11 19:33 作者:九思519  | 我要投稿

別讓異常逃離析構函數(shù)

????????C++不禁止析構函數(shù)拋出異常但是也不提倡這樣的做法,因為有可能原本析構函數(shù)承擔了釋放內存的任務,而異??赡軐е挛鰳嫼瘮?shù)沒執(zhí)行完就程序結束了,從而內存泄漏。以下有個例子

????????假設 v 中有2個 Wiget,其中2個Wiget都在析構的時候拋出異常,此時程序不是結束執(zhí)行就是導致不明確行為,會在釋放 v 之前而程序提前結束,導致內存沒有釋放。

????????方式一采取的方法是遭遇錯誤就停止執(zhí)行程序,此行為較為合理,也就是阻止不明確行為發(fā)生。

????????方法二采取的是吞下因調用close而發(fā)生的異常,這種行為一般是不好的,因為導致錯誤信息無法立馬顯示。但是有時候比如“草率結束程序”和“發(fā)生不明確行為”來說要好。

一個較好的解決方法

????????如果實在需要在析構函數(shù)中使用異常,那么可以通過給客戶留接口來實現(xiàn),就是析構函數(shù)本身釋放一次,又顯式的給客戶留出一個釋放接口,在程序拋出異常的時候控制離開析構函數(shù)也能讓客戶來釋放資源。

????????此類問題復雜的時候很難依靠程序員獨自處理,因為情況和問題多種多樣,需要客戶和開發(fā)者一起解決。留出一個接口給客戶也不失為一種補救方法。

Effective C++ 第八條Prevent exception from leaving destructors.的評論 (共 條)

分享到微博請遵守國家法律
博爱县| 沙湾县| 嵩明县| 邛崃市| 怀宁县| 弥勒县| 吉木萨尔县| 萝北县| 嫩江县| 宁夏| 固阳县| 甘洛县| 来宾市| 沙湾县| 雷波县| 沧源| 林州市| 浪卡子县| 彰化市| 达日县| 八宿县| 利津县| 昌都县| 南阳市| 五指山市| 阿拉善右旗| 榕江县| 滦南县| 鱼台县| 宜宾市| 耿马| 凤山县| 宝坻区| 大英县| 英山县| 洪雅县| 扎赉特旗| 屯门区| 琼海市| 教育| 楚雄市|