C++ MapViewOfFile是否可以返回同一地址两次?
早上好,MapViewOfFile是否可以返回同一地址两次?但是,UnmapViewOfFile在必须两次取消映射同一地址时会出现错误行为。我们得到一个错误487:无效地址。下面是一些伪代码,显示了我们如何使用MapViewOfFile和UnMapViewOfFile:C++ MapViewOfFile是否可以返回同一地址两次?,c++,windows,C++,Windows,早上好,MapViewOfFile是否可以返回同一地址两次?但是,UnmapViewOfFile在必须两次取消映射同一地址时会出现错误行为。我们得到一个错误487:无效地址。下面是一些伪代码,显示了我们如何使用MapViewOfFile和UnMapViewOfFile: retval = UnmapViewOfFile(TmpPrevMapPtr); if (retval == 0){ DWORD lasterr = GetLastError();
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:是的,secondMapViewOfFile
可以返回相同的地址。但是,在这种情况下,UnmapViewOfFile
也会成功。Naveen,感谢您的回复。我认为MapViewOfFile只能回复唯一的地址。为什么MapViewOfRef偶尔会两次返回同一地址?但是,Naveen在必须两次取消映射同一地址时,UnmapViewOfFile会出现错误行为。我们得到一个错误487:无效地址。谢谢您的回答。@Frank:您在第二次执行取消存档文件之前执行了MapViewOfFile
?否则您将取消映射一个已释放的地址,这是不允许的。纳文,谢谢您的回复。Naveen,以下是事件序列MapViewOfFile UnMapViewOfFile,MapViewOfFile UnMapViewOfFile。。。。。。在这种情况下,文件的MapView是否可以返回相同的地址两次。谢谢。@Frank:是的,secondMapViewOfFile
可以返回相同的地址。但是,在这种情况下,UnmapViewOfFile
也会成功。Naveen,感谢您的回复。我认为MapViewOfFile只能回复唯一的地址。为什么MapViewOfRef偶尔会返回同一地址两次?