Discussion: Provide strong resource safety; that is, never leak anything that you think of as a resource
討論:提供強大的資源安全性;也就是說,永遠不要泄漏任何您認爲是資源的東西git
Reason(緣由)
Prevent leaks. Leaks can lead to performance degradation, mysterious error, system crashes, and security violations.github
緣由防止泄漏。泄漏會致使性能降低,神祕錯誤,系統崩潰和違反安全性。web
Alternative formulation: Have every resource represented as an object of some class managing its lifetime.編程
替代方案:將每種資源表示爲管理其壽命的某個類的對象。設計模式
Example(示例)安全
template<class T>
class Vector {
private:
T* elem; // sz elements on the free store, owned by the class object
int sz;
// ...
};
This class is a resource handle. It manages the lifetime of the Ts. To do so, Vector must define or delete the set of special operations (constructors, a destructor, etc.).微信
此類是資源句柄。它管理T們的壽命。爲此,Vector必須定義或刪除特殊操做集(構造函數,析構函數等)。架構
Example(緣由)app
??? "odd" non-memory resource ???
Enforcement(實施建議)
The basic technique for preventing leaks is to have every resource owned by a resource handle with a suitable destructor. A checker can find "naked news". Given a list of C-style allocation functions (e.g., fopen()), a checker can also find uses that are not managed by a resource handle. In general, "naked pointers" can be viewed with suspicion, flagged, and/or analyzed. A complete list of resources cannot be generated without human input (the definition of "a resource" is necessarily too general), but a tool can be "parameterized" with a resource list.ide
防止泄漏的基本技術是用帶有合適的析構函數的資源句柄管理每一個資源。檢查器能夠找到「暴露的new S」操做。給定一系列C樣式的分配函數(例如fopen()),檢查器還能夠查找不受資源句柄管理的用法。一般,能夠帶着「疑問」查看,標記和/或分析「裸指針」。沒有人工輸入就沒法生成完整的資源列表(「資源」的定義必然太籠統),可是可使用資源列表對工具進行「參數化」。
原文連接https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#discussion-provide-strong-resource-safety-that-is-never-leak-anything-that-you-think-of-as-a-resource
新書介紹
《實戰Python設計模式》是做者最近出版的新書,拜託多多關注!
本書利用Python 的標準GUI 工具包tkinter,經過可執行的示例對23 個設計模式逐個進行說明。這樣一方面可使讀者瞭解真實的軟件開發工做中每一個設計模式的運用場景和想要解決的問題;另外一方面經過對這些問題的解決過程進行說明,讓讀者明白在編寫代碼時如何判斷使用設計模式的利弊,併合理運用設計模式。
對設計模式感興趣並且但願隨學隨用的讀者經過本書能夠快速跨越從理解到運用的門檻;但願學習Python GUI 編程的讀者能夠將本書中的示例做爲設計和開發的參考;使用Python 語言進行圖像分析、數據處理工做的讀者能夠直接以本書中的示例爲基礎,迅速構建本身的系統架構。
以爲本文有幫助?請分享給更多人。
關注微信公衆號【面向對象思考】輕鬆學習每一天!
面向對象開發,面向對象思考!
本文分享自微信公衆號 - 面向對象思考(OOThinkingDalian)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。