Я пытаюсь сохранить массив структур в стиле c Vertex3D в объект NSData и вернуть их при перезагрузке приложения:
NSData *vert = [NSData dataWithBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];
Эти данные затем сохраняются и пытаются быть прочитаны обратно в мой c-массив таким образом:
vertices = malloc(sizeof(Vertex3D) * NUM_OF_VERTICES);
[vert getBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];
Приведенные выше результаты показывают «EXC_BAD_ACCESS», за которым следует:
malloc: *** error for object 0x48423c0: pointer being freed was not allocated
Я очень новичок в программировании, поэтому, возможно, есть какой-то фундаментальный принцип управления памятью, о котором я не знаю. Я проверил, что загруженные NSData идентичны сохраненному, но ясно, что переход от массива c к NSData (и обратно) не такой, как я предполагал.