【发布时间】:2013-11-14 06:15:11
【问题描述】:
“重要的是要注意,堆块在后端分配器的眼中可能被认为是忙碌的,但仍然没有被应用程序使用。这背后的原因是前端分配器上的任何堆块备用列表仍将其状态设置为忙碌。” -- 高级 Windows 调试 p.267
我的问题是:如果堆块状态设置为忙,为什么前端分配器会将其添加到 LAL 以供使用?
换句话说,状态标志要么指示块是忙要么是空闲。那么为什么空闲块不在 LAL 中,如果这些块的状态标志设置为忙(如语句所说,它们可以是忙或不忙),如何将这些块分配给 LAL?
【问题讨论】:
-
您正在询问有关已过时的未记录实施细节的问题。所有现代版本的 Windows 上的应用程序都使用低碎片堆。这也被广泛地逆向工程,只是不是你正在阅读的任何书。你在浪费你的时间,真的,也是我们的。
-
Microsoft 已决定默认切换为使用低碎片前端分配器,而不是 Windows Vista 中的 LAL。