我寫了一個應用程序,其中我發現在將TBitmap32保存到流時,由Graphics單元的GDIError方法引發的偶發EOutofResources錯誤 。德爾福EOutOfResources(GDIError)
據我所知,它可能來自gdi限制或堆限制。 我知道這個過程有一個10000個句柄的默認限制。 所以根據任務管理器僅報告620
我已經下載並運行桌面堆信息監視工具,其報告本我的應用程序:
Desktop Heap Information Monitor Tool (Version 8.1.2925.0)
Copyright (c) Microsoft Corporation. All rights reserved.
-------------------------------------------------------------
Session ID: 0 Total Desktop: ( 7360 KB - 11 desktops)
WinStation\Desktop Heap Size(KB) Used Rate(%)
-------------------------------------------------------------
WinSta0\Default 3072 44.5
WinSta0\Disconnect 64 4.5
WinSta0\Winlogon 128 10.2
Service-0x0-3e7$\Default 512 29.1
Service-0x0-3e4$\Default 512 6.8
Service-0x0-3e5$\Default 512 6.8
SAWinSta\SADesktop 512 0.5
__X78B95_89_IW\__A8D9S1_42_ID 512 0.5
Service-0x0-1ae39$\Default 512 2.4
Service-0x0-12d284a7$\Default 512 2.5
Service-0x0-1312b6d4$\Default 512 15.0
-------------------------------------------------------------
正如上面我只用44%的桌面堆在winsta0中。
此外,此錯誤不時引發。它永遠達不到上述限制。 我如何檢查問題出在哪裏?是什麼導致了這個錯誤?
謝謝
也許你正在泄漏位圖句柄? – 2011-05-18 14:32:41
我認爲你應該發佈相關的代碼。 – Sam 2011-05-19 03:04:20