这是我在阅读<Windows via C/C++ 5th Edition> 时遇到的另一个问题。首先,让我们看一些引文。
LPVOID WINAPI VirtualAlloc(
__in_opt LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD fdwAllocationType,
__in DWORD fdwProtect
);
最后一个参数 fdwProtect 表示应该分配给区域的保护属性。 与区域关联的保护属性对映射到该区域的提交存储没有影响。
保留区域时,分配将最常用于该区域的存储的保护属性。例如,如果您打算提交具有 PAGE_READWRITE 保护属性的物理存储,则应使用 PAGE_READWRITE 保留该区域。当区域的保护属性与提交存储的保护属性匹配时,系统的内部记录保存会更有效。
(提交存储时)...您通常传递调用 VirtualAlloc 以保留区域时使用的相同页面保护属性,尽管您可以指定不同的保护属性。
上面的引用完全让我感到困惑。
如果与区域关联的保护属性对提交的存储没有影响,我们为什么需要它?
既然建议对保留和提交使用相同的保护属性,为什么 Windows 仍然为我们提供使用不同属性的选项?这不是误导和悖论吗?
保留区域和已提交存储的保护属性分别存储在哪里?
非常感谢您的见解。