我需要找到影响 Windows API 的内存损坏错误。基本上,程序运行一段时间后,CreateWindowEx
函数返回NULL
句柄并GetLastError()
返回1407,意思是“找不到窗口类”。我检查了lpClassName
参数,没有问题,并且该类已经注册。事实上,程序正常创建了该类的多个窗口,然后突然CreateWindowEx
拒绝创建新窗口并报错1407。这个程序只有一个线程,我们确定UnregisterClass
问题窗口类注册后没有调用.
我们怀疑我们的程序正在破坏某些USER32
或其他 Windows 数据结构。但是使用Application Verifier和Visual Leak Detector for Visual C++运行它,没有发现泄漏或内存损坏。资源使用率也很低,窗口句柄的数量永远不会超过 2k,提交的内存永远不会超过 50mb。
这让我想到了这个问题的标题:是否有一些 Windows API 或 Windows 配置选项可以按需或连续检查给定进程的 Windows 数据结构的状态?我已经在使用带有许多启用检查的应用程序验证程序,但它根本没有发现任何错误。