映射在地址空间中的内存映射文件。如果地址空间是4 GB,那么windows映射文件的大小如何超过4 GB?
答案 0 :(得分:3)
查看相关的API:
LPVOID WINAPI MapViewOfFile(
_In_ HANDLE hFileMappingObject,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwFileOffsetHigh,
_In_ DWORD dwFileOffsetLow,
_In_ SIZE_T dwNumberOfBytesToMap
);
这只映射文件的一部分,即文件的视图。并且可以在任何时间映射的字节数由dwNumberOfBytesToMap
的值确定。其类型为SIZE_T
,是指针大小的整数。换句话说,在32位进程中,任何时候可以映射的内容的上限是4GB。
如果要映射的文件大于4GB(实际上,在达到4GB之前,你会遇到连续地址空间的问题),那么你需要映射文件的多个视图以覆盖它完整的。