2

GetGuiResources(GetCurrentProcess(), GR_GDIOBJECTS)在开始时WinMain和最后一次返回之前使用来检测 GDI 泄漏或者更具体地说,我忘记释放的对象是一个好主意吗?
另外我目前想知道为什么我的程序中的第一个调用在4还没有窗口时返回。

4

3 回答 3

2

在大多数情况下,使用process explorer就足够了。保持窗口打开,显示进程的 GDI 句柄(右键单击列,选择“选择列”,然后选中“进程内存”选项卡中的“GDI 对象”复选框)。

在运行您的应用程序时,请注意 GDI 句柄的数量 - 如果它增加并且永远不会返回,您就知道您有泄漏。

于 2009-01-23T14:35:31.177 回答
1

The code with this MSDN magazine article provided a slick way to troubleshoot GDI handle leaks. Unfortunately, the source code no longer seems to be available...

于 2009-01-23T12:32:22.687 回答
0

虽然这会告诉您是否泄漏了任何 GDI 对象,但它不会告诉您有关您泄漏了哪些 GDI 对象的任何信息。在一个重要的程序中,我认为这没有多大帮助。

如果要跟踪 GDI 对象,我相信有一些 Performance Counters 可以显示当前在进程中分配的 GDI 对象句柄的数量。您可以随着时间的推移观察它,以更好地了解您的程序泄漏的位置。

于 2009-01-23T12:14:54.767 回答