【发布时间】:2016-07-29 10:55:14
【问题描述】:
我想知道这段代码是否为sn-p:
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,但这可能会导致一些奇怪的行为?
【问题讨论】:
-
这些函数的执行顺序不限。
标签: c winapi createfile file-mapping