Windows:调整共享内存大小

当我在 Windows上创建共享内存段(如CreateFileMapping(INVALID_HANDLE_VALUE,…))时,除了创建更大的段并复制数据之外,有没有办法调整它的大小?

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

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

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

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

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

相关文章

(1)when you ping a computer from itsafe,the ping command should return the local IP address. (...
1、点击win菜单,点击设置图标 2、选择系统选项 3、选择应用与程序选项 4、拉到最下方,选择程序与功能...
目前一直直接往Windows 2008 R2 Server中复制文件(暂时还没有搭建ftp服务),突然不能复制了,于是百度...
windows下使用vscode配合xebug调试php脚本 要下载有php_xebug.dll扩展的版本,最新版可能没有这个扩展,p...
在控制面板的程序与功能里启用和关闭windows功能打开,适用于linux的windows子系统
效果演示 推荐一个非常牛的文档网站生成器:docsify 我通过这个工具,成功将码云上的个人学习笔记发布到...