gpt4 book ai didi

c++ - 将共享内存与 CreateFileMapping 和 MapViewofFile 一起使用的问题

转载 作者:可可西里 更新时间:2023-11-01 14:44:18 25 4
gpt4 key购买 nike

我有两个关于使用共享内存的问题。我正在使用 CreateFileMapping 在两个进程之间创建共享内存区域。

1) 我知道我需要对从 CreateFileMapping 或 OpenFileMapping 调用返回的每个句柄调用 CloseHandle 以释放内存。我的问题是,如果使用共享内存的程序在没有调用 CloseHandle 的情况下退出,Windows XP/7 是否会正确关闭所有句柄并释放内存? IE - 在关闭所有使用内存的进程后是否存在内存泄漏的可能性?

2) 我使用 MapViewofFile 获取指向内存的指针。在 1 个实例中,我假设共享内存将始终存在于方法的上下文中。所以我将 MapViewOfFile 的返回值保存为一个指针并关闭了内存的句柄,我只是使用指向共享内存的指针(但仍然锁定对它的访问)。这安全吗,还是我应该在每次访问共享内存时调用 MapViewOfFile?

谢谢,

伊恩

最佳答案

1) 是的,当一个进程终止时,所有的句柄都会关闭,不管它是死了还是很好地完成了。这里没有泄漏。

2) 只要​​您不调用UnmapViewOfFile,进程仍然可以访问内存,即使句柄已关闭:

Although an application may close the file handle used to create a file mapping object, the system holds the corresponding file open until the last view of the file is unmapped

关于c++ - 将共享内存与 CreateFileMapping 和 MapViewofFile 一起使用的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com