打開任務管理器,點擊菜單“查看”——“選擇列”,勾上所有項,“確定”。運行自己的程序,進行各種操作,并查看任務管理器中GDI對象和句柄數的變化。
如果在某次可逆操作中,例如,彈出一個對話框,然后關閉,GDI對象或句柄數先增加了,然后減少了,但是總量還是增加了,說明存在內存泄露,GDI對象沒有被及時回收。如果句柄數出現類似情況,則情況復雜很多。
接下來,注釋掉某些代碼,編譯運行并繼續觀察,逐步定位導致內存泄露的代碼段。
實例:
某程序運行時,彈出一個窗口,再關閉,GDI對象數目就增加了一個。經過一個多小時的分析,最后定位出問題所在,如下: