Frage

Ich versuche, eine c-Stil Reihe von Vertex3D structs zu einem NSData Objekt zu speichern und sie zurück zu bekommen, wenn die App neu zu laden:

NSData *vert = [NSData dataWithBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];  

Diese Daten werden dann gespeichert und versucht auf diese Weise wieder in meine c-Array gelesen werden:

vertices = malloc(sizeof(Vertex3D) * NUM_OF_VERTICES);
[vert getBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];  

Die obigen Ergebnisse in „EXC_BAD_ACCESS“, gefolgt von:

malloc: *** error for object 0x48423c0: pointer being freed was not allocated  

ich Programmierung bin sehr neu, so gibt es wahrscheinlich einige grundlegende Speicherverwaltung Prinzip bin ich nicht bewusst. Ich habe festgestellt, dass die geladene NSData die eine gespeicherten identisch ist, aber es ist klar, dass der Übergang von der C-Array zu NSData (und zurück) ist nicht als I bestimmt ist.

War es hilfreich?

Lösung

Es ist unmöglich, ohne zu sehen, Ihre Erklärung für die vertices Variable zu sagen, aber &vertices verwendet, ist wahrscheinlich falsch in dem Code, den Sie in Ihrer Frage aufzulisten. Wenn vertices ein C-Array ist, dann ist es schon ein Zeiger und Sie sollten die Adreßoperator & weglassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top