C数组到NSData并返回

时间:2010-03-11 21:08:49

标签: iphone malloc nsdata

我正在尝试将一个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(和返回)的转换不是我想要的。

1 个答案:

答案 0 :(得分:2)

如果没有看到vertices变量的声明,就无法判断,但在您的问题中列出的代码中使用&vertices可能是错误的。如果vertices是一个C数组,那么它已经是一个指针,你应该省略地址运算符&