GDI資源洩漏導致的程式異常的解析
之前聽說過,在編寫程式碼時要注意及時釋放申請來的GDI資源,以免產生GDI資源洩漏,導致程式異常。但是沒有實際的體會,在今天晚上的小組討論會上,大家談到了這類話題,才真實的體會到GDI資源洩漏帶來的種種不利影響,比如會出現LoadBitmap失敗直接導致奔潰,程式繪圖出現異常(主要是視窗自繪出現異常),程式記憶體持高不下等等。
那麼GDI資源洩漏具體什麼含義呢?主要是指申請的GDI資源沒有釋放,導致程式佔用的GDI資源越來越多,記憶體的佔用也越來越多,從而導致程式出現異常。在Windows中有HPEN、HBRUSH等GDI物件,MFC對GDI物件進行了很好的封裝,提供了封裝GDI物件的類,如CPen、CBrush、CFont、CBitmap和CPalette等,這些類都是GDI物件類CGdiObject的派生類。對於通過Create-XXXXX動態建立的GDI物件資源一定要進行銷燬,比如CreateCompatibleDC()、CreateCompatibleBitmap()、CreateIndirectFont()、CreateSolidBrush()、CreatePen()等,在使用結束後一定要呼叫對應的Delete-XXXXX介面將GDI物件資源給釋放掉。
相關文章
- 異常程式導致大量資源佔用
- 異常連線導致的記憶體洩漏排查記憶體
- 造成記憶體洩漏的異常處理記憶體
- Bulk 異常引發的 Elasticsearch 記憶體洩漏Elasticsearch記憶體
- SCN異常增長導致資料庫異常關閉風險的防範資料庫
- Oracle 資料庫不一致導致異常的恢復Oracle資料庫
- 精華閱讀第 13 期 |常見的八種導致 APP 記憶體洩漏的問題APP記憶體
- crontab設定導致的伺服器程式異常問題伺服器
- .Net程式記憶體洩漏解析記憶體
- Java異常捕捉陷阱(記憶體洩漏,finally塊,catch塊,繼承得到的異常)Java記憶體繼承
- MySQL 預插入的資料條數過多導致異常MySql
- Oracle RAC啟動因CTSS導致的異常Oracle
- MySQL Bug導致異常當機的分析流程MySql
- 當機導致slave異常分析
- 360衛士阻止程式建立,導致各種異常
- 導致資料洩露的 6 個疏忽
- 記憶體洩漏問題分析之非託管資源洩漏記憶體
- 【RAC】儲存陣列電源故障導致RAC資料庫異常掛起陣列資料庫
- WARNING! 配置不當,或導致Kotlin原始碼洩漏!Kotlin原始碼
- HA異常導致oracle資料庫無法啟動Oracle資料庫
- 伺服器架構導致的SEO收錄異常伺服器架構
- crontab導致CPU異常的問題分析及處理
- 記一次 vue 的非同步更新佇列導致記憶體洩漏Vue非同步佇列記憶體
- 記 Laravel Observer 導致 Redis 佇列異常LaravelServerRedis佇列
- 序列異常導致災備端應用異常處理一則
- 記一次非同步處理導致Jetty Request物件洩漏非同步Jetty物件
- MyBatis版本升級導致OffsetDateTime入參解析異常問題覆盤MyBatis
- 解決NSTimer迴圈引用導致記憶體洩漏的六種方法記憶體
- 避免PHP-FPM記憶體洩漏導致記憶體耗盡PHP記憶體
- 【MYSQL】mysql5.7-bug -information_schema的表被查詢可能導致記憶體洩漏MySqlORM記憶體
- 時區不一致導致spring應用異常Spring
- 外接程式 VMDebugger 未能載入或導致了異常 修復
- 我的程式跑了60多小時,就是為了讓你看一眼JDK的BUG導致的記憶體洩漏。JDK記憶體
- A站大流量導致服務崩潰異常分析
- OGG 表結構變化導致同步異常
- 神奇的DEBUG:因為異常導致MongoDB容器無法啟動MongoDB
- LOAD異常中止導致表無法訪問的解決方法
- Spring中new出一個物件導致的空指標異常Spring物件指標