正式にアンロードされていないにもかかわらずメモリ上に存在しなかったDLLの謎、パート1
DLLが正式にアンロードされていないのに、メモリ上から消えてしまう現象の原因を探るブログ記事。デバッグの過程で明らかになる、メモリ管理やDLLのライフサイクルに関する意外な落とし穴について解説する。
背景メモ
- レイモンド・チェン(Raymond Chen)による「The Old New Thing」は、Microsoftの開発者向け公式ブログ。Windowsの内部動作に関する深い技術的解説で知られ、特にカーネルやDLLの振る舞いについてのデバッグ事例が人気。
- DLL(Dynamic-Link Library)はWindowsでコードを共有する仕組み。通常、プロセスがDLLをロードすると、そのDLLの参照カウントが増え、明示的に解放(FreeLibrary)されるかプロセスが終了するまでメモリに残る。
- 本記事シリーズは、「DLLが明示的にアンロードされていないのにメモリから消えていた」という不可解なバグの原因を調査する過程を扱う。WindowsのDLLローダーやメモリ管理の予期せぬ相互作用がテーマ。