Windows:调整共享内存大小
发布时间:2020-12-14 04:17:00 所属栏目:Windows 来源:网络整理
导读:当我在 Windows上创建共享内存段(如CreateFileMapping(INVALID_HANDLE_VALUE,…))时,除了创建更大的段并复制数据之外,有没有办法调整它的大小? 我在MSDN中读过文件映射有一个固定的大小,但是有可能通过某种方式在同一个内存上进行新的映射吗?就像在Linux中
当我在
Windows上创建共享内存段(如CreateFileMapping(INVALID_HANDLE_VALUE,…))时,除了创建更大的段并复制数据之外,有没有办法调整它的大小?
我在MSDN中读过文件映射有一个固定的大小,但是有可能通过某种方式在同一个内存上进行新的映射吗?就像在Linux中一样,你可以使用shm_open()然后再使用ftruncate()和mmap().
简短的回答是否定的 – 一旦创建文件映射,就无法调整文件映射的大小.您描述的创建/复制序列是我知道通过系统页面文件支持的文件映射来实现此目的的唯一方法.
也就是说,您可以自己管理支持映射的文件并完成此操作.从您自己的零初始化数据文件开始,并为您调用CreateFileMapping()指定有效的句柄. 需要调整大小时,关闭映射,扩展文件,然后重新创建映射.这需要在增长/截断操作之间进行一些同步 – 这不是微不足道的,但也不应该太困难. 最后,这是一个古老的故事.增加了复杂性与性能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- TwitteR,ROAuth和Windows:注册确定,但证书验证失败
- Windows Phone 8.1 – Windows Phone 8.1 vs Windows Phone
- 是否有一个Windows注册表“字典”,解释整个(或大部分)Windo
- windows-server-2008-r2 – 在Windows 2008 R2 64bit上运行
- windows-7 – 如何在不使用GUI的情况下为远程桌面授权用户?
- 窗口 – 从头开始??编写COM对象?
- Windows cygwin相当于Mac OS X打开命令
- windows – 我可以使用taskkill来杀死在特定用户下运行的进
- Metro XAML – TemplateBinding和SolidColorBrush的问题
- go 工具链目前[不支持编译 windows 下的动态链接库]解决方案