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行