函数CreateFileMapping可用于在页面文件中分配空间(如果第一个参数是INVALID_HANDLE_VALUE)。分配的空间可以稍后被内存映射到进程虚拟地址空间。
为什么我要这样做而不是只使用VirtualAlloc?
似乎这两个函数几乎都在做同样的事情。VirtualAlloc 分配的内存可能会在某个时候被推送到页面文件中。为什么我需要一个 API 来专门请求我的页面在第一个实例中分配到那里?我为什么要关心我的私人页面在哪里?
它只是向操作系统提示我预期的内存使用模式吗?(即,前者暗示更积极地换出这些页面。)
或者它只是在 32 位进程上处理非常大的数据集时的一种方便方法?(即,我可以使用 CreateFileMapping 进行 > 4Gb 分配,然后根据需要将内存映射到较小的空间块。使用页面文件为我节省了手动管理我自己的文件集以“交换”到的工作。)
附注。这个问题是由我最近阅读的一篇文章引发的:http : //blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx
从 CreateFileMappingFunction 中:
A single file mapping object can be shared by multiple processes.
Run Code Online (Sandbox Code Playgroud)
虚拟内存可以在多个进程之间共享吗?
| 归档时间: |
|
| 查看次数: |
1274 次 |
| 最近记录: |