je tente de sauver un tableau c-style de Vertex3D struct à un objet NSData et les récupérer lors du rechargement de l'application:C-tableau à NSData et à l'arrière
NSData *vert = [NSData dataWithBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];
Ces données sont ensuite enregistrées et tenté de lire de nouveau dans mon c-gamme ainsi:
vertices = malloc(sizeof(Vertex3D) * NUM_OF_VERTICES);
[vert getBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];
Les résultats ci-dessus dans « EXC_BAD_ACCESS » suivi par:
malloc: *** error for object 0x48423c0: pointer being freed was not allocated
Je suis très novice en programmation, il y a probablement un principe fondamental de gestion de la mémoire que je ne connais pas. J'ai vérifié que le NSData chargé est identique à celui enregistré, mais il est clair que la transition de c-array à NSData (et arrière) n'est pas comme je l'ai prévu.
J'ai déclaré le tableau de sommets ainsi: Vertex3D * vertices; J'ai essayé d'omettre le &. Cela l'empêche de s'écraser, mais le tableau n'est pas correctement rempli. –
Merci pour votre aide. Le problème était en effet mon appel & sommets lors de l'enregistrement des données (et le chargement aussi), qui, si je comprends bien, juste enregistré une référence à la mémoire au lieu des données. –