我想知道这个代码片段是否:
HANDLE fhandle = CreateFile("something.c", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
HANDLE mapping = CreateFileMapping(fhandle, NULL, PAGE_READONLY, 0, 0, NULL);
LPVOID map_view = MapViewOfFile(mapping, FILE_MAP_READ, 0, 0, 0);
以下释放对象的顺序是有效的:
CloseHandle(mapping);
CloseHandle(fhandle);
UnmapViewOfFile(contents);
即我可以先关闭文件句柄然后再调用UnmapViewOfFile
吗?
我知道CloseHandle(mapping)
andUnmapViewOfFile(contents)
的执行顺序无关紧要,但是关闭文件句柄呢?
我问是因为我只想将map_view
指针用于析构函数。在我看来,这可行,并且文件一直保存到UnmapViewOfFile
被调用,但这可能会导致一些奇怪的行为?