C++ MapViewOfFile是否可以返回同一地址两次?

C++ MapViewOfFile是否可以返回同一地址两次?,c++,windows,C++,Windows,早上好,MapViewOfFile是否可以返回同一地址两次?但是,UnmapViewOfFile在必须两次取消映射同一地址时会出现错误行为。我们得到一个错误487:无效地址。下面是一些伪代码,显示了我们如何使用MapViewOfFile和UnMapViewOfFile: retval = UnmapViewOfFile(TmpPrevMapPtr); if (retval == 0){ DWORD lasterr = GetLastError();

早上好,MapViewOfFile是否可以返回同一地址两次?但是,UnmapViewOfFile在必须两次取消映射同一地址时会出现错误行为。我们得到一个错误487:无效地址。下面是一些伪代码,显示了我们如何使用MapViewOfFile和UnMapViewOfFile:

retval =    UnmapViewOfFile(TmpPrevMapPtr);            
if (retval == 0){
    DWORD lasterr = GetLastError();
    printf("UNMAP Last Error = %d ...
      }

  MapPtr = (char*)::MapViewOfFile( hMapping, FILE_MAP_WRITE | FILE_MAP_READ,0,baseoff,
mappedlength);
  if (MapPtr == 0){
    throw cException(ERR_MEMORYMAPPING,TempFileName);
  }

  Thank you.

执行
UnmapViewOfFile
后,该虚拟地址可自由用于其他操作。因此,是的,后续的
MapViewOfFile
可能会返回此地址。

在执行
取消MapViewOfFile
后,该虚拟地址可以自由用于其他操作。因此,是的,后续的
MapViewOfFile
可能会返回此地址。

Naveen但是,如果必须两次取消映射同一地址,UnmapViewOfFile会出现错误行为。我们得到一个错误487:无效地址。谢谢您的回答。@Frank:您在第二次执行
取消存档文件
之前执行了
MapViewOfFile
?否则您将取消映射一个已释放的地址,这是不允许的。纳文,谢谢您的回复。Naveen,以下是事件序列MapViewOfFile UnMapViewOfFile,MapViewOfFile UnMapViewOfFile。。。。。。在这种情况下,文件的MapView是否可以返回相同的地址两次。谢谢。@Frank:是的,second
MapViewOfFile
可以返回相同的地址。但是,在这种情况下,
UnmapViewOfFile
也会成功。Naveen,感谢您的回复。我认为MapViewOfFile只能回复唯一的地址。为什么MapViewOfRef偶尔会两次返回同一地址?但是,Naveen在必须两次取消映射同一地址时,UnmapViewOfFile会出现错误行为。我们得到一个错误487:无效地址。谢谢您的回答。@Frank:您在第二次执行
取消存档文件
之前执行了
MapViewOfFile
?否则您将取消映射一个已释放的地址,这是不允许的。纳文,谢谢您的回复。Naveen,以下是事件序列MapViewOfFile UnMapViewOfFile,MapViewOfFile UnMapViewOfFile。。。。。。在这种情况下,文件的MapView是否可以返回相同的地址两次。谢谢。@Frank:是的,second
MapViewOfFile
可以返回相同的地址。但是,在这种情况下,
UnmapViewOfFile
也会成功。Naveen,感谢您的回复。我认为MapViewOfFile只能回复唯一的地址。为什么MapViewOfRef偶尔会返回同一地址两次?