首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows:调整共享内存大小

Windows:调整共享内存大小
EN

Stack Overflow用户
提问于 2011-06-06 23:52:13
回答 1查看 3K关注 0票数 7

当我在Windows (如CreateFileMapping(INVALID_HANDLE_VALUE, ...))上创建一个共享内存段时,除了创建一个更大的段并复制数据之外,还有什么方法可以调整它的大小吗?

我在MSDN中读到文件映射有固定的大小,但是有没有可能在相同的内存上建立一个新的映射呢?就像在Linux中一样,你可以先使用shm_open(),然后再使用ftruncate()mmap()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-07 00:43:38

简而言之,答案是否定的--文件映射一旦创建,就无法调整其大小。据我所知,您所描述的创建/复制序列是使用系统分页文件支持的文件映射来完成此操作的唯一方法。

也就是说,您可以自己管理支持映射的文件并完成此操作。从您自己的零初始化数据文件开始,并为您对CreateFileMapping()的调用指定有效的句柄。

当需要调整大小时,关闭映射,扩展文件,然后重新创建映射。这将需要在增长/截断操作之间进行一些同步-这不是微不足道的,但也不应该太难。

最后,这还是一个老故事。增加了复杂性和性能。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6254637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档