在WinMain
的开始,在最后一次返回检测GDI泄漏之前,或者更具体地说,我忘记发布的对象之前,使用GetGuiResources(GetCurrentProcess(), GR_GDIOBJECTS)
是一个好主意吗?
此外,我目前想知道为什么我的程序中的第一个电话没有窗口时返回4
。
在大多数情况下,使用进程管理器就足够了。 保持窗口打开,显示进程的GDI句柄(右键单击列,选择“选择列”,然后选中“进程内存”选项卡中的“GDI对象”复选框)。
在运行应用程序时,请注意GDI句柄的数量 – 如果增加并且永远不会返回,就知道有泄漏。
这个MSDN杂志文章的代码提供了一个简单的方法来解决GDI句柄泄漏问题。 不幸的是,源代码似乎不再可用…
虽然这会告诉你,如果你泄露了任何GDI对象,它不会告诉你任何你泄漏的GDI对象。 在一个非平凡的程序中,我看不出这个很有帮助。
如果你想跟踪GDI对象,我相信有一些性能计数器显示当前在进程中分配的GDI对象句柄的数量。 随着时间的推移,您可以观察一下,以更好地了解您的程序泄漏的位置。