我被告知内存映射文件是获得快速文件i/o来存储2d游戏磁贴图的一种可能的方法。游戏将频繁地更新数据,我将知道要更新的行/列,因此我可以通过这种方式直接访问数组。然而,看着一些例子,我不明白这是如何工作的。
有没有人有一个创建、读取和写入结构的内存映射文件的小示例,其中的结果将是一个一维数组,这样我就可以为我的游戏访问它,例如maprow * MAX_ROW + col.tileID = x;。Boost or Win 32很好,我没有偏好,但我发现网上的例子有点令人困惑,经常很难将它们转换成我想要的结果。
发布于 2012-12-31 08:56:49
这里有一个看起来比较容易理解的例子:Problem with boost memory mapped files: they go to disk instead of RAM
请注意,.data()成员提供了一个char*,您可以将它转换为一个指针,指向您想要的任何内容的数组,只要有足够的内存,就可以大干一场。
也就是说,我高度怀疑内存映射文件在这里是错误的解决方案。为什么不使用普通的C++ (向量、类、ifstreams等)加载到你的级别,随意修改它,如果你想把更改保存到磁盘上,完成后再写出来呢?
https://stackoverflow.com/questions/14095286
复制相似问题