2012-12-30 22 views
1

我被告知內存映射文件作爲獲得快速文件I/O存儲2D遊戲瓷磚地圖的可能方式。遊戲將頻繁更新數據,我將知道要更新的行/列,以便可以在數組中以這種方式進行直接訪問。然而,看一些例子,我不明白這是如何工作的。贏32或增強內存映射訪問

有沒有人有創建,讀取,&寫入結構的內存映射文件的小例子,其中結果將是一維數組,因此我可以像map一樣訪問它作爲我的遊戲[row * MAX_ROW + col ] .tileID = x;例如。提升或贏32將是好的我沒有偏好,但我發現在線的例子有點混亂,往往很難將它們轉換爲我想要的結果。

回答

3

這裏有一個例子在這裏,看起來有點理解:Problem with boost memory mapped files: they go to disk instead of RAM

注意。數據()成員,爲您提供一個char *,你可以施放此爲指針,以任何你想要給予足夠的內存和一個數組去野外。

這就是說,我高度懷疑內存映射文件在這裏是錯誤的解決方案。爲什麼不使用普通的C++(vector,classes,ifstreams等)加載你的關卡,不管你喜歡怎麼修改它,當你完成後再寫出來,如果你想把修改保存到磁盤上?

+0

這是一個MMO,玩家控制整個地圖,所以我需要經常將更改寫入地圖,所以我希望它儘可能快。我將在地圖的內存代表中進行更改,但每隔30秒左右,我需要將更改快速保存到磁盤。 – user441521