Windows中窗口和类额外字节的演变
本文探讨了Windows系统中窗口额外字节(Window Extra Bytes)和类额外字节(Class Extra Bytes)的历史演变。从16位Windows的早期设计出发,解释了这些额外存储空间如何用于存储与窗口或窗口类相关联的应用程序特定数据,以及它们随着Windows版本迭代而发生的改进和变化。
背景速读
- 窗口额外字节(window extra bytes)和类额外字节(class extra bytes)是 Windows 早期(16位时代)引入的内存优化机制。每个窗口或窗口类可以在系统分配的固定结构中额外申请一小块自定义数据区,避免开发者自己管理独立内存带来的碎片和性能开销。
- 这套机制在 Win32(32位/64位)时代仍然保留,但使用场景大幅减少——现代习惯直接用 C++ 类、结构体或 SetWindowLongPtr 等更灵活的 API 来存储窗口实例数据。
- Raymond Chen 是微软的资深工程师,长期维护 "The Old New Thing" 博客,专门讲解 Windows 内部机制、历史设计决策和遗留行为,对理解 Windows API 的"为什么这样设计"有极高参考价值。
- 这篇文章适合 Windows 开发者、系统程序员和对操作系统历史感兴趣的读者,帮助理解向后兼容性如何约束 Windows API 的演变。