Domanda

Sto tentando di salvare una serie c-stile di struct Vertex3D a un oggetto NSData e farli indietro quando ricaricare l'applicazione:

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

Questi dati vengono quindi salvato e ha tentato di essere letto nuovamente dentro il mio c-array nel seguente modo:

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

I risultati di cui sopra in “EXC_BAD_ACCESS” seguito da:

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

Sono molto nuovo alla programmazione quindi c'è probabilmente un principio fondamentale di gestione della memoria che sono a conoscenza. Ho verificato che il carico NSData è identica a quella salvata, ma è chiaro che la transizione da c-array per NSData (e viceversa) non è così intendevo.

È stato utile?

Soluzione

E 'impossibile dire senza vedere la sua dichiarazione per la variabile vertices, ma utilizzando &vertices è probabilmente sbagliato nel codice di elencare nella sua interrogazione. Se vertices è un array C, allora è già un puntatore e si dovrebbe omettere la & operatore di indirizzo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top