标题:关于共享内存区的疑问
取消只看楼主
hjy88168
Rank: 2
等 级:禁止访问
帖 子:37
专家分:13
注 册:2011-10-13
结帖率:53.85%
 问题点数:0 回复次数:1 
关于共享内存区的疑问
是这样,我明白创建共享内存区,分这四步:

1.CreateFileMapping  //创建共享内存区
2.MapViewOfFile     //映射共享内存区
3、UnmapViewOfFile  //用完之后关闭映射
3.closehandle        //关闭对象句柄

应该是在第二步后靠MapViewOfFile的返回一个指针来操纵那块内存区,这里我都明白

现在呢,我的程序其他部分还有机会访问到这块内存区,按照我之前的理解,我会把上面的四个API做的步骤放到一个初始化函数里用于创建这块共享内存区,但其他函数还会访问这块区域

再用到此共享区的时候我会再用四个API:

1.OpenFileMapping //打开已有的文件映射内核对象
2.MapViewOfFile     //映射共享内存区
3、UnmapViewOfFile  //用完之后关闭映射
3.closehandle        //关闭对象句柄

可以发现后三个API是一样的,所以我怀疑closehandle这个步骤到底是完全是释放了吗?为什么还可以open开呢?
者是第一个疑问
第二个疑问,我想提高程序的效率,在我初始化这块内存区的时候,只做到第三步,也就是UnmapViewOfFile,但不关闭对象即closehandle,那么我下次再用的时候,是不是可以直接从第二个api开始即MapViewOfFile,用完之后也UnmapViewOfFile,但不关闭对象即closehandle
等程序退出前,我closeHandle掉这个对象,不知道可以否??

以上两个问题,请有经验的大神给与解答!谢谢了~
搜索更多相关主题的帖子: 内存 
2013-03-05 10:39
hjy88168
Rank: 2
等 级:禁止访问
帖 子:37
专家分:13
注 册:2011-10-13
得分:0 
求助!
2013-03-12 13:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-399786-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.082188 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved