我在做内存映射时用MapViewOfFile函数来得到创建的文件的映射指针,然后对文件进行操作。
但是呢,在debug的时候我发现程序在我的机器上可以运行,但在另外一台机器上会出现不能映射文件的错误,而且是不定期的出现,有的时候可以运行,有的时候又不行。最主要的是另外一台机器的配置比我的好多了,应该不存在虚拟内存分配的问题啊。搞不懂啊,有没有人指点一二啊。
PS:我要处理的数据是很大,先读取两个200MB的文件,然后在创建两个400MB的文件并对这几个文件建立内存映射从而得到文件指针!
多谢了,很急啊。

解决方案 »

  1.   

    据说有个文件窗口。查一下windows核心编程关于内存映射那一章吧。
      

  2.   

    将MapViewOfFile一次映射到内存的部分减少。
    估计是内存不够了,XP还是Win7?要是Win7会好一些。
      

  3.   

    内存肯定够。。我在网上查了下,说是不能分配大片的连续映射内存。。但是一次性都可以分配1G的啊。这应该不是内存不够的问题哦。感觉可以从其他渠道解决的,我用的是XP。。在另一个机器是服务器是windows server 2003
      

  4.   

    用GetLastError获取一下错误信息
    然后做一个日志文件看看到底是什么问题
    这么猜是不容易解决的
      

  5.   

    XP系统啊,就是内存不够,你加多少内存也没用,一个进程使用的内存数量都是有限制的。
    别信理论上的1G,信哥的,没错。
      

  6.   

    查看一下 windows 交换文件的配置,是否 C 盘的空间比较小,file mapping 对象如果不是针对文件,而是临时创建的 file mapping ,会使用系统交换文件;另外,在不同的操作系统下,file mapping 的内部实现有区别;看看是否你们不同机器的操作系统有区别。
      

  7.   

    就是MapViewOfFile出错啊返回错误值是8..
      

  8.   

    将MapViewOfFile一次映射到内存的部分减少。
      

  9.   

    这就是内存分配不足的意思(8---Not enough storage is available to process this command. ),将你的代码尽量写成一个很小的模块,用于试验和上传吧,处理文件的大小也提供一下,这样猜测性的分析不出什么结果的