Python中CreateCompatibleDC和CreateBitmap造成的內存泄漏


 1 def PrintScreen():
 2     hwnd = 0  # 窗口的編號,0號表示當前活躍窗口
 3     # 根據窗口句柄獲取窗口的設備上下文DC(Divice Context)
 4     hwndDC = win32gui.GetWindowDC(hwnd)
 5     # 根據窗口的DC獲取mfcDC
 6     mfcDC = win32ui.CreateDCFromHandle(hwndDC)
 7     # mfcDC創建可兼容的DC
 8     saveDC = mfcDC.CreateCompatibleDC()
 9     # 創建bigmap准備保存圖片
10     saveBitMap = win32ui.CreateBitmap()
11     # 獲取監控器信息
12     MoniterDev = win32api.EnumDisplayMonitors(None, None)
13     w = MoniterDev[0][2][2]
14     h = MoniterDev[0][2][3]
15     # print w,h   #圖片大小
16     # 為bitmap開辟空間
17     saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
18     # 高度saveDC,將截圖保存到saveBitmap中
19     saveDC.SelectObject(saveBitMap)
20     # 截取從左上角(0,0)長寬為(w,h)的圖片
21     saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)
22     saveBitMap.SaveBitmapFile(saveDC, "ps.png")
23 
24     # 釋放內存,不然會造成資源泄漏
25     win32gui.DeleteObject(saveBitMap.GetHandle())
26     saveDC.DeleteDC()
27 
28     file = read_file("ps.png")
29     os.remove("ps.png")
30     return file

只要都釋放掉就可以了,25 26行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM