【发布时间】:2012-02-05 06:18:00
【问题描述】:
有人可以解释一下拥有这两个功能的理由吗?而不是只有一个具有组合功能的功能?
有没有这两个不被当成一对的情况?
【问题讨论】:
-
您创建文件映射对象一次,并多次映射视图。
标签: winapi
有人可以解释一下拥有这两个功能的理由吗?而不是只有一个具有组合功能的功能?
有没有这两个不被当成一对的情况?
【问题讨论】:
标签: winapi
具有不同功能的原因是,除了定义统一的参数(如页面和缓存的参数)之外,CreateFileMapping() 可用于锁定大于可用地址空间的文件/范围。 MapViewOfFile() 然后可以适当地放置和移动子范围,以使实际内容在地址空间中可用。
【讨论】:
因为这会禁用一个重要的使用场景,映射一个大于您愿意花费的虚拟内存量的文件。
或有可用的。地址空间碎片限制了您可以创建的视图大小,因为单个视图需要连续的地址范围。在 32 位版本的 Windows 上逐渐减少到大约 650 兆字节。完全取决于加载的 DLL 和创建的堆数。创建多个视图也是完全合理的。
您可以轻松编写一个小辅助函数来将两者结合起来。
【讨论】: