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記憶體
- .Net程式記憶體洩漏解析記憶體
- MySQL 預插入的資料條數過多導致異常MySql
- Oracle RAC啟動因CTSS導致的異常Oracle
- 360衛士阻止程式建立,導致各種異常
- 導致資料洩露的 6 個疏忽
- 記憶體洩漏問題分析之非託管資源洩漏記憶體
- GCC8 編譯最佳化 BUG 導致的記憶體洩漏GC編譯記憶體
- 解決NSTimer迴圈引用導致記憶體洩漏的六種方法記憶體
- 伺服器架構導致的SEO收錄異常伺服器架構
- MyBatis版本升級導致OffsetDateTime入參解析異常問題覆盤MyBatis
- 記一次 vue 的非同步更新佇列導致記憶體洩漏Vue非同步佇列記憶體
- cv::Mat轉QImage導致影像色彩異常
- 記 Laravel Observer 導致 Redis 佇列異常LaravelServerRedis佇列
- 記一次非同步處理導致Jetty Request物件洩漏非同步Jetty物件
- 時區不一致導致spring應用異常Spring
- 避免PHP-FPM記憶體洩漏導致記憶體耗盡PHP記憶體
- OGG 表結構變化導致同步異常
- 神奇的DEBUG:因為異常導致MongoDB容器無法啟動MongoDB
- Spring中new出一個物件導致的空指標異常Spring物件指標
- 我的程式跑了60多小時,就是為了讓你看一眼JDK的BUG導致的記憶體洩漏。JDK記憶體
- 例項解析網路程式設計中的另類記憶體洩漏程式設計記憶體
- snmp弱口令引起的資訊洩漏
- android Handler導致的記憶體洩露Android記憶體洩露
- Redis CVE-2020-14147導致例項異常退出Redis
- A站大流量導致服務崩潰異常分析
- OGG相關的CPATURE導致SYSAUX表空間異常暴增處理UX
- ORACLE 11.2.0.4 rac for linux 鏈路宕導致的單節點異常當機OracleLinux
- 【vSAN資料恢復案例】異常斷電導致vSAN底層資料損壞的資料恢復資料恢復
- 【北亞資料恢復】異常斷電導致Oracle資料庫報錯的oracle資料恢復資料恢復Oracle資料庫
- OutOfMemoryException異常解析Exception
- 從原始碼分析JSONObject因版本差異導致toString格式異常問題原始碼JSONObject
- 什麼是資料洩露?哪些問題可導致資料洩露
- Android常見記憶體洩漏總結Android記憶體
- 記憶體洩漏的定位與排查:Heap Profiling 原理解析記憶體
- 資料洩漏!我們的資訊還安全麼?
- STANDBY_FILE_MANAGEMENT引數未設定auto導致的ADG備庫異常