Windows API に影響するメモリ破損のバグを見つける必要があります。基本的に、プログラムをしばらく実行した後、CreateWindowEx
関数はNULL
ハンドルをGetLastError()
返し、「ウィンドウ クラスが見つかりません」を意味する 1407 を返します。パラメータを確認したlpClassName
ところ問題なく、クラスはすでに登録されていました。実際、プログラムはそのクラスの多くのウィンドウを正常CreateWindowEx
に作成しますが、突然新しいウィンドウの作成を拒否し、エラー 1407 を返します。このプログラムにはスレッドが 1 つしかなくUnregisterClass
、問題のウィンドウ クラスが登録された後にへの呼び出しはないと確信しています。 .
USER32
私たちのプログラムが何らかのWindows データ構造を破壊していると思われます。しかし、Application VerifierとVisual C++ 用の Visual Leak Detector を使用して実行したところ、リークやメモリの破損は見つかりませんでした。リソースの使用率も低く、ウィンドウ ハンドルの数が 2k を超えることはなく、コミットされたメモリが 50 MB を超えることもありません。
これは、この質問のタイトルにつながります: 特定のプロセスの Windows データ構造の状態をオンデマンドまたは継続的にチェックできる Windows API または Windows 構成オプションはありますか? すでに多くのチェックを有効にして Application Verifier を使用していますが、エラーはまったく検出されません。