Skip to content
TopicTracker
来自 devblogs.microsoft.com/oldnewthing查看原文
译文语言译文语言

内存中未正式卸载却消失不见的DLL之谜,第二部

本文是系列的第二部分,探讨一个看似矛盾的案例:某个DLL并未被正式卸载,却从内存中消失。作者通过串联两个不同的bug,解释了这一异常现象的根本原因。

背景速读

- Raymond Chen 是微软资深开发者,长期撰写《The Old New Thing》博客,专门讲解 Windows 底层机制和调试中遇到的诡异 bug。这篇文章是系列第二篇,延续了上一篇未讲完的 DLL 丢失谜题。 - 核心场景:一个 DLL(动态链接库)在 Windows 进程中没有被正式卸载(没有调用 FreeLibrary),却从内存中消失了。作者通过两条独立 bug 线索的交汇来解释这个看似不可能的现象。 - 需要的基础知识:Windows 中 DLL 通过引用计数管理加载/卸载;FreeLibrary 会减少计数,计数到零才真正卸载;但某些系统组件(如内核态驱动、DLL 的入口点代码)绕过常规路径,导致计数状态混乱。 - 这篇帖子面向的是 Windows 系统程序员和调试工程师,普通读者需要了解“引用计数”“进程地址空间”“DLL 入口点”等概念。

相关报道

  • The article describes a project to create a hybrid barcode that combines a traditional 1D UPC barcode with a 2D QR code, allowing scanners to read the numeric code up close while QR readers can decode the full pattern from a distance.