最近在仿qq2009登入介面,
出現了資源洩漏.
平時寫慣了.net程式,很少會注意到這點.
介面的每次重新訊息gdi引用計數直線上公升, gdi物件 沒有釋放 記憶體也直線上公升,就造成了資源洩漏.
找了半天是 畫刷控制代碼沒有釋放.
::deleteobject(hbrush);
::deleteobject(holdbrush);
想起了這些詞彙
「resource acquisition is initialization」:「資源獲取即初始化」 raii rtti 執行時的型別發現, 物件資源管理器
優化後,gdi物件固定了.
記錄 一下,
接著寫完其它控制項.
資源管理 防止資源洩漏
在傳統的資源管理中,我們常用的技術是 在建構函式中申請資源,在析構函式中釋放資源。但是這有個缺點,就是當在建構函式中申請資源時,如果發生資源申請異常,就會導致建構函式失敗 這樣一來,當構造的物件離開作用域時,析構函式不會呼叫,原因是 如果建構函式不能正常完成時,析構函式就不會做相應的呼叫。這樣一來,...
C 中如何避免資源洩漏
請看下面一段 如果在執行delete這行 之前該片段產生異常,程式會在發生異常點停止並產生棧展開,所以不會執行delete語句,造成資源洩漏。解決的方法如下 用智慧型指標替代普通指標,當發生異常並進行棧展開過程時,程式會析構已經構造完畢的類,從而避免了資源洩漏。上面運用的是共享指標,但可以根據實際需...
悲劇的文字
題目描述 你有乙個破損的鍵盤。鍵盤上所有的鍵都能正常工作,但有時home鍵或者end鍵會自動按下 注意 按下home鍵游標會跳到一行的開頭,按下end鍵,游標會跳到一行的結尾。你並不知道鍵盤存在這一問題,而是專心地打稿子,甚至連螢幕都沒有開啟。當你開啟顯示器之後,展現在你面前的是一段悲劇的文字。你的...