函数CreateFileMapping可以用于在页面文件中分配空间(如果第一个参数是
为什么我要这样做而不只使用VirtualAlloc?
似乎这两个函数的作用几乎相同。由VirtualAlloc分配的内存可能在某些时候被推送到页面文件中。为什么我需要一个特别请求在首次分配时将我的页面分配到那里的API?我为什么要关心我的私有页面位于何处?
这只是向操作系统提供有关我的预期内存使用模式的提示吗? (即,前者是更积极地交换这些页面的提示。)
还是说这只是在32位进程上处理非常大的数据集时的一种方便方法? (即,我可以使用CreateFileMapping进行> 4Gb的分配,然后根据需要将较小的空间映射到内存中。使用页面文件可以省去手动管理自己的“交换”文件集的工作。)
PS。 这个问题是由我最近阅读的一篇文章引发的:http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx
INVALID_HANDLE_VALUE
)。稍后,可以将已分配的空间映射到进程虚拟地址空间中。为什么我要这样做而不只使用VirtualAlloc?
似乎这两个函数的作用几乎相同。由VirtualAlloc分配的内存可能在某些时候被推送到页面文件中。为什么我需要一个特别请求在首次分配时将我的页面分配到那里的API?我为什么要关心我的私有页面位于何处?
这只是向操作系统提供有关我的预期内存使用模式的提示吗? (即,前者是更积极地交换这些页面的提示。)
还是说这只是在32位进程上处理非常大的数据集时的一种方便方法? (即,我可以使用CreateFileMapping进行> 4Gb的分配,然后根据需要将较小的空间映射到内存中。使用页面文件可以省去手动管理自己的“交换”文件集的工作。)
PS。 这个问题是由我最近阅读的一篇文章引发的:http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx