0

在地址空间中映射的内存映射文件。windows如何映射文件,如果地址空间为4 gb,则其大小超过4 gb?

4

1 回答 1

3

看一下相关的API:

LPVOID WINAPI MapViewOfFile(
  _In_  HANDLE hFileMappingObject,
  _In_  DWORD dwDesiredAccess,
  _In_  DWORD dwFileOffsetHigh,
  _In_  DWORD dwFileOffsetLow,
  _In_  SIZE_T dwNumberOfBytesToMap
);

这仅映射文件的一部分,即文件的视图。并且任意一次可以映射的字节数由dwNumberOfBytesToMap. 其中有 type SIZE_T,一个指针大小的整数。也就是说,在一个32位的进程中,任何一次可以映射的上限都是4GB。

如果要映射大于 4GB 的文件(实际上,在达到 4GB 之前很久就会遇到连续地址空间的问题),那么您需要映射文件的多个视图才能完整地覆盖它。

于 2013-10-30T10:34:39.527 回答