在地址空间中映射的内存映射文件。windows如何映射文件,如果地址空间为4 gb,则其大小超过4 gb?
问问题
431 次
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 回答