【发布时间】:2011-01-09 14:12:38
【问题描述】:
我想在运行 DLL 的不同进程之间共享一些内存。因此我通过HANDLE hSharedFile = CreateFileMapping(...)然后LPBYTE hSharedView = MapViewOfFile(...)和LPBYTE aux = hSharedView创建了一个内存映射文件
现在我想从 aux 数组中读取 bool、int、float 和 char。阅读bool 和char 很容易。但是我将如何阅读int 或float?请注意,int 或 float 可以从位置 9 开始,例如一个不能被 4 整除的位置。
我知道你可以将char[4] 和memcpy 读成float 或int。但我真的需要这个非常快。我想知道是否可以用指针做一些事情?
提前致谢
【问题讨论】:
-
hSharedView 有什么用?为什么不直接说 LPBYTE aux = MapViewOfFile(...)?
-
没错,你可以这样做。我只是学会了用另一种方式做;)
-
但是为什么只有一个冗余变量?您可以在其中添加更多内容:“LPBYTE 冗余 0 = hSharedView;LPBYTE 冗余 1 = 冗余 0;LPBYTE 辅助 = 冗余 1;”我只是在开玩笑——这就是你用 hSharedView 做的事情,而且看起来很傻。
标签: c++ byte memcpy memory-mapped-files