在做文件映射时,当文件大于1.2G(绝不是1G)时,MapViewOfFile()映射失败(返回值为NULL).但文件映射内核对象被成功地创建(CreateFileMapping()).
请问这是为什么?有什么方法可以解决?
32位处理器可以管理4G的内存地址空间,可为什么在这里只有1G多.而且《windows核心编程》上说是完全可以的.
请各位赐教,不胜感激!

解决方案 »

  1.   

    摘抄自《VC++6宝典》第453页:WIN98下,私有页驻留在4MB到2GB之间,而共享页驻留在2GB到4GB之间。
    WIN NT也区分私有页与共享页,其方式比WIN98更敏感。
    文件映射是放在共享页。也就是说,你能利用的最多是2GB,而系统及其它应用已占用了几百MB,那你只能得到1.2GB......嗯这个这个,应该不奇怪吧?
      

  2.   

    谢谢,昨天我已做过测试在物理内存大小不同(128,256),内存使用情况不同(112-280),所最多能映射的文件大小是个定值(1327038465byte),而不是随系统资源不同而有所改变的.