我有两个关于使用共享内存的问题。我正在使用 CreateFileMapping 在两个进程之间创建共享内存区域。
1) 我知道我需要在 CreateFileMapping 或 OpenFileMapping 调用返回的每个句柄上调用 CloseHandle 以释放内存。我的问题是,如果使用共享内存的程序在没有调用 CloseHandle 的情况下退出,所有句柄是否都会被适当地关闭并被 Windows XP/7 释放内存?IE - 在所有使用 mem 的进程都已关闭后,是否有可能发生 mem 泄漏?
2)我使用 MapViewofFile 来获取指向内存的指针。在一个实例中,我假设共享内存将始终存在于方法的上下文中。因此,我将 MapViewOfFile 的返回值保存为指针并关闭了 mem 的句柄,我只是使用指向共享 mem 的指针(但仍锁定对它的访问)。这是安全的,还是每次访问共享内存时都应该调用 MapViewOfFile ?
谢谢,
伊恩