user441521
user441521

Reputation: 6998

Win 32 or boost memory map access

I was told about memory mapped files as a possible way to get fast file i/o to store a 2d game tile map. The game will have frequent updates to the data where I will know the row/col to update so I can get direct access that way in the array. However looking at some examples I don't understand how this would work.

Does anyone have a small example of creating, reading, & writing to a memory map file of a struct, where the result would be a 1D array so I can access it for my game as map[row * MAX_ROW + col].tileID = x; for example. Boost or Win 32 would be fine I don't have a preference, but I find the examples online to be somewhat confusing and often have a hard time converting them to my desired result.

Upvotes: 0

Views: 679

Answers (1)

Miss Blit
Miss Blit

Reputation: 491

There's an example here that looks somewhat understandable: Problem with boost memory mapped files: they go to disk instead of RAM

Note the .data() member that gives you a char*, you could cast this to a pointer to an array of whatever you want given enough memory and go wild.

That said, I highly suspect that memory mapped files is the wrong solution here. Why not just load in your level using normal C++ (vector, classes, ifstreams, etc.), modify it however you like, and write it out again when you're done if you want the changes saved to disk?

Upvotes: 2

Related Questions