首先:
hdc hdc = getdc(hwnd);
cdc *pdc = cdc::fromhandle(hdc);
對於以上**,通過fromhandle得到的 cdc 不可以釋放. fromhandle 是通過 hdc 來建立了乙個 cdc 物件,以方便操作,釋放 dc 的操作應該針對於 hdc 而非此 cdc , 如果釋放了它 pdc->releasedc ,就會造成隱患.
這兩者是指向的乙個dc物件,只能釋放一次,而這個釋放應該針對 hdc 而非 pdc.
然後:getdc和releasedc的呼叫配對,createdc和deletedc的呼叫配對。
getdc是從視窗獲取現有的dc,而createdc是建立dc,所以releasedc和deletedc的作用乙個是釋放,乙個是銷毀.
請教關於cdc資源釋放的問題。
m_holdbmp = selectobject( m_hmemdc, m_hbmp );
cdc *pdc = new cdc;
if (!pdc)
pdc->attach(m_hmemdc);
//...使用pdc..**略
pdc->detach();
m_hbmp=(hbitmap) selectobject( m_hmemdc, m_holdbmp );
return true;
問題:1.請教如何釋放該cdc資源;
2.為什麼反覆new cdc後出錯呢?
------解決方案--------------------
1.請教如何釋放該cdc資源;
********************
對cdc來說,將與cdc相關的dc資源釋放掉,然後用delete將這個指標釋放掉
2.為什麼反覆new cdc後出錯呢?
==========
可能是申請太多,gdi資源已經不夠用了。
------解決方案--------------------
這樣new cdc 的用法沒試過。通常在view類裡面 cdc*pdc = getdc(); 然後 releasedc(pdc); 或者在對話方塊裡面cpaintdc dc(this);或者使用cclientdc等。你是什麼專案?不是mfc專案嗎?感覺這樣反覆new cdc不怎麼合理似的。
------解決方案--------------------
cdc獲取後一定要釋放,如果一直new而不delete就會記憶體不足而出錯
關於鎖的自動釋放
這種方案一直在用,但是一直沒能領會到它的意圖,也是在乙個面試過程中,被問到乙個此類問題,從而才想到的。問題 當在乙個函式中使用鎖時,如果加鎖後由於某種原因 疏忽,異常等 沒有釋放鎖就直接退出了,那麼將導致鎖的狀態錯誤,怎樣解決這個問題?1 沒有正常釋放鎖 就像下面的程式一樣 這裡僅作為示例,選用mu...
關於Jquery記憶體的釋放
專案進入尾聲,又是最恐怖的效能測試 對著js的效能測試我只能做這個表情 經過多次的 檢查和測試,確認已經把自己定的變數什麼的一大堆都已經用null處理,並且沒有明顯的迴圈引用,但結果進行使用者某一動作時,記憶體還是沒被全部 而是線性增加,最後發現,問題都是出現在dom身上 主要是太相信jquery的...
關於Jquery記憶體的釋放
專案進入尾聲,又是最恐怖的效能測試 對著js的效能測試我只能做這個表情 經過多次的 檢查和測試,確認已經把自己定的變數什麼的一大堆都已經用null處理,並且沒有明顯的迴圈引用,但結果進行使用者某一動作時,記憶體還是沒被全部 而是線性增加,最後發現,問題都是出現在dom身上 主要是太相信jquery的...