GDI內存泄露主要是GDI對象沒有釋放造成的,導致資源短缺。在MFC中,GDI對象無非是以下幾種:pen,Brush,bitmap,CDC。
創建這些對象後,最後要釋放。一:CBrush BackgroundBrush(BackgroundColor);
CBrush *pbrush=pDC->SelectObject(&BackgroundBrush); 以SelectObject形式釋放。或者.DeleteObject()形式釋放。
另外一種是OnCtlColor裏面的HBRUSH的釋放。如果反覆調用,最後內存肯定不夠。最好把畫刷定義爲類成員變量。這樣就不會反覆調用了。
幾種內存泄露監測工具:
Visual Leak Detector是一款用於Visual C++的免費的內存泄露檢測工具。可以在http://www.codeproject.com/tools/visualleakdetector.asp
boundschecker