Skip to main content
GameDev.net gamedev.net
🔒 Locked

Read/Write binary

Started by SamiHuutoniemi Dec 6, 2012 at 1:22 PM 2 replies 1.6k views
Original Post
SamiHuutoniemi
SamiHuutoniemi
Hello!

Instead of reading a model from a huge obj-file (21 mb) I made a simple binary format which i wrote data to. But when I try to read it I get problems. It happens when I want to read an array of vertices. I get an access violation on the read line.

[source lang="cpp"]vertices = new TextureVertex[numVertices];
buffer.read((char*) &vertices, sizeof(TextureVertex) * numVertices);[/source]
The value of numVertices is 10920, and the data IS in the stream I read from.

Is it possible that the memory that is allocated to vertices is not sequential? If it isnt, how do I force it to be? Is it something else?

(The data is read from an object which also has a "TextureVertex* vertices" of the same length.
wqking
wqking

vertices = new TextureVertex[numVertices];
buffer.read((char*) vertices, sizeof(TextureVertex) * numVertices);

No &, because vertics is already the address.
Brother Bob
Brother Bob
vertices is the pointer to the buffer returned by new, but &vertices is a pointer to the value of the vertices pointer. You want to read into the buffer, not overwrite the pointer value returned by new, so drop the &.
SamiHuutoniemi
SamiHuutoniemi
Never mind.

I solved it. Sinces vertices was already a pointer, I shouldnt have used "vertices" instead of "&vertices".

/Facedesk

EDIT: I see you solved it too! Thanks for the help. Sometimes one just feels really stupid. And I blame my copy/paste!

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.