我正在尝试将一个c样式的Vertex3D结构数组保存到NSData对象中,并在重新加载应用程序时将它们取回:
NSData *vert = [NSData dataWithBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];
然后保存这些数据并尝试将其读回我的c-array:
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与保存的NSData相同,但很明显从c-array到NSData(和返回)的转换不是我想要的。
答案 0 :(得分:2)
如果没有看到vertices
变量的声明,就无法判断,但在您的问题中列出的代码中使用&vertices
可能是错误的。如果vertices
是一个C数组,那么它已经是一个指针,你应该省略地址运算符&
。