MapViewOfFile 中
误区1,dwNumberOfBytesToMap 必须是64K的整数倍,也就是系统内存分配粒度的整数倍
实际:MSDN中并没有写这个要求,而是仅指定了dwFileOffsetLow 必须是64K的整数倍;实验证明确实不需要
问题2, All bytes must be within the maximum size specified by CreateFileMapping
实际:“所有的字节必须在CreateFileMapping指定的最大尺寸之内”,
也就是说dwFileOffsetHigh/Low + dwNumberOfBytesToMap 不能超过dwMaximumSizeHigh/Low ,
如果超过了,函数会失败,返回NULL
也就是说,不能映射不存在的内容,——和CreateFileMapping不能映射0字节文件一致
也就是说,不存在MapViewOfFile实际返回内存长度 不等于 dwNumberOfBytesToMap 的情况
实验证明上述内容
注意3,MapViewOfFile能成功,需要依赖系统中连续的、未被预定的内存长度,所以有失败的可能。
实际:映射内存越长,失败几率越大,所以不要想当然的用。要准备分页的方式分部分映射