GDI程式設計需要注意的地方 控制代碼洩漏

2021-06-12 11:52:53 字數 558 閱讀 7776

寫gdi的時候,我們經常會由於粗心大意,忘記釋放gdi資源,導致gdi控制代碼洩露。再加上如果單元測試做的不好,就會在產品發布以後發生問題。

眾所周知,windows上對於乙個程序允許的最大gdi控制代碼數量為9999,如果程式有大量的gdi控制代碼沒有被及時**,那麼程式就會表現的不正常。如果這種問題發生在以前的windows 98年代,甚至會造成系統崩潰。

所以,這裡我將陸續記錄一些gdi程式設計需要注意的地方,作為今後單元測試中的一部分來進行:

1、create()必須delete(),包括createcompatibledc

2、selectobject()必須是成對出現

3、"h"打頭的一些gdi控制代碼,在使用完後要及時釋放。如::deleteobject(hbitmap),::deletedc(hdc)等

4、記住乙個原則:自己建立的東西要自己釋放,如getdc 要 releasedc

5、mfc的gdi有很多問題,使用的時候要非常小心。建議最好直接用sdk寫。使用wtl中的gdi也是乙個不錯的選擇。wtl中有些gdi物件在宣告的時候就可以決定是由析構函式來幫你釋放,還是由你自己釋放,非常方便。

串列埠程式設計需要注意的地方

做過一系列的串列埠裝置通訊,一直都 createfile 然後 writefile 完了就 closehandle 沒出什麼問題,這次做唯拓的一款led顧客顯示屏,依然這麼做,因為事先使用過他們提供的 demo 程式測試過裝置,因此寫的 dll 也能正常被呼叫,交給其他同事使用,接好裝置後顯示正常的...

java需要注意的地方2

1.abstract class name 大俠們,這有何錯誤?答案 錯。abstract method必須以分號結尾,且不帶花括號。2.public class something 有錯嗎?答案 錯。區域性變數前不能放置任何訪問修飾符 private,public,和protected final...

unique約束需要注意的地方

sql 建立作者表 create table author 主鍵 id int primary key,姓名不能為空 name nvarchar 8 not null,年齡必須大於0小於120 age tinyint constraint ck age check age 0 and age 120...