释放内存映射文件后取消映射视图是否安全?
Is it safe to unmap a view after releasing the memory mapped file?
我一直在假设
下工作
- 创建内存映射文件
- 创建视图
- 做事
- 取消映射视图
- 发布文件
但是,出现了一种情况,在释放文件后取消映射视图会更方便,因此交换步骤 4 和 5。我测试了它,没有错误,一切都很好。不过还是觉得有点腥。我在微软文档中没有看到任何关于此的信息,有人知道这种做法是否安全吗?我显然没有在释放文件和取消映射之间使用视图。
完成第 3 步后,您是否完全完成了对视图的访问?您需要从其他地方深度复制视图的所有内容吗?如果是这样,unmapping/releasing就好了。
根据MSDN,这是允许的。
These calls to CloseHandle succeed even when there are file views that are still open. However, leaving file views mapped causes memory leaks.
为了清楚起见,如果可能的话,我仍然更喜欢先取消映射视图。
我一直在假设
下工作- 创建内存映射文件
- 创建视图
- 做事
- 取消映射视图
- 发布文件
但是,出现了一种情况,在释放文件后取消映射视图会更方便,因此交换步骤 4 和 5。我测试了它,没有错误,一切都很好。不过还是觉得有点腥。我在微软文档中没有看到任何关于此的信息,有人知道这种做法是否安全吗?我显然没有在释放文件和取消映射之间使用视图。
完成第 3 步后,您是否完全完成了对视图的访问?您需要从其他地方深度复制视图的所有内容吗?如果是这样,unmapping/releasing就好了。
根据MSDN,这是允许的。
These calls to CloseHandle succeed even when there are file views that are still open. However, leaving file views mapped causes memory leaks.
为了清楚起见,如果可能的话,我仍然更喜欢先取消映射视图。