【问题标题】:Is shared memory array returned by CreateFileMapping/MapViewOfFile zero initialized?CreateFileMapping/MapViewOfFile 返回的共享内存数组是否初始化为零?
【发布时间】:2012-06-19 13:05:47
【问题描述】:

只是好奇我是否像这样在 Windows 平台上创建共享内存数组:

HANDLE hFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE | SEC_COMMIT, 0, 1024 * 4, _T("mySharedMemName"));
if(hFile)
{
    VOID* pData = MapViewOfFile(hFile, FILE_MAP_ALL_ACCESS, 0, 0, 1024 * 4);

    //Is 'pData' array initialized with zeros the first time the 'hFile' is used?
}

我第一次调用这个代码sn-p时,内存数组是用0初始化的吗?如果没有,如何使其零初始化?

【问题讨论】:

  • 大多数操作系统零填充新映射到进程地址空间的所有页面(除非这些页面由磁盘文件或外围设备共享或支持)。从安全的角度来看,不这样做是不明智的。

标签: c++ winapi shared-memory


【解决方案1】:

来自documentation

操作系统页面文件支持的文件映射对象中页面的初始内容为0(零)。

【讨论】:

  • 谢谢。显然我错过了。很高兴我们不必清除它。
猜你喜欢
  • 2015-08-08
  • 2019-03-07
  • 2012-01-26
  • 1970-01-01
  • 2015-05-07
  • 2014-04-06
  • 2011-02-07
  • 1970-01-01
  • 2017-02-06
相关资源
最近更新 更多