このコード スニペットの場合:
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)
との実行順序UnmapViewOfFile(contents)
は関係ないことはわかっていますが、ファイル ハンドルを閉じるとどうなるでしょうか。
map_view
デストラクタにポインタだけを使いたいのでお願いしています。これは機能し、UnmapViewOfFile
呼び出されるまでファイルが保持されるように思えますが、これにより奇妙な動作が発生する可能性がありますか?