我在一个旧的大型程序中有一个句柄泄漏。使用sysinternals handle.exe,我推断出泄漏的句柄类型是“事件”句柄。但是我不确定应该看代码的哪一部分。在某个地方有返回事件句柄的函数列表吗?

编辑:在整个程序中没有CreateEvent,CreateEventEx或OpenEvent的单个实例。

最佳答案

您看到多少这些泄漏的 handle ?

事件是由关键部分(请参见InitializeCriticalSection等)以及可能我目前不记得的其他一些Win32元素隐式创建的。此外,它们可以由您正在使用的框架(如果有)(例如MFC)创建,也可以由您正在使用的库创建。

若要跟踪泄漏,可以使用仅打印断点。进入CreateEvent函数(使用程序集 View ),并在其第一条指令上放置一个断点。然后右键单击该断点,选择“当命中...”并编辑选项,这样它就不会打入调试器,但会打印一些有用的信息(例如,请参阅$ CALLER宏)。然后运行您的应用...,并准备查看巨大的日志。如果存在真正的泄漏,您将在日志中看到一个重复的模式,该模式可以识别出违法者。

关于c - 什么是事件句柄?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1750461/

10-13 07:30