最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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.的評論 (共 條)

分享到微博請遵守國家法律
长葛市| 南汇区| 阳东县| 文安县| 唐河县| 崇州市| 宝应县| 大足县| 曲周县| 泸西县| 西盟| 泰安市| 若尔盖县| 梁平县| 阳春市| 江川县| 轮台县| 黎城县| 宁海县| 淮北市| 凤台县| 社会| 青浦区| 宿松县| 读书| 崇阳县| 普兰县| 朝阳区| 长垣县| 左云县| 广州市| 武清区| 衡阳市| 都安| 罗江县| 嘉荫县| 航空| 乳山市| 湖北省| 繁昌县| 宣化县|