6

このコード スニペットの場合:

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呼び出されるまでファイルが保持されるように思えますが、これにより奇妙な動作が発生する可能性がありますか?

4

1 に答える 1