Windows:调整共享内存大小

前端之家收集整理的这篇文章主要介绍了Windows:调整共享内存大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我在 Windows上创建共享内存段(如CreateFileMapping(INVALID_HANDLE_VALUE,…))时,除了创建更大的段并复制数据之外,有没有办法调整它的大小?

我在MSDN中读过文件映射有一个固定的大小,但是有可能通过某种方式在同一个内存上进行新的映射吗?就像在Linux中一样,你可以使用shm_open()然后再使用ftruncate()和mmap().

简短的回答是否定的 – 一旦创建文件映射,就无法调整文件映射的大小.您描述的创建/复制序列是我知道通过系统页面文件支持文件映射来实现此目的的唯一方法.

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

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

最后,这是一个古老的故事.增加了复杂性与性能.

猜你在找的Windows相关文章