我有一个非常简单的C结构,如下所示:
typedef struct {
int tag;
CGPoint position;
} Place;
也就是说,所有标量类型且结构中没有指针.
然后,我得到了一系列这样的点:
Place *dynamicPlaces = calloc(numberOfPlaces, sizeof(Place));
因此,dynamicPlaces的每个元素都应该是(除非我混合了一些东西……我和指针当然有可能……)一个Place类型的结构,其所有成员都初始化为0,是吗?到现在为止还挺好.
然后,我尝试将该数组放入要通过网络发送的NSData对象中(以及元素计数,未显示):
NSData *placesData = [NSData dataWithBytes:dynamicPlaces length:(sizeof(Place) * numberOfPlaces)];
我直接将其传递给数组,因为如果服务于内存,则指针dynamicPlaces实际上指向数组的第一个struct元素,然后通过长度告诉它有多少个元素.我认为这很好.
最后,另一方面,我在解码对象时执行此操作.
[receivedData getBytes:receivedDynamicPlacesArrayPointer length:[receivedData length]];
但是我在那条线上得到了EXC_BAD_ACCESS,我不知道为什么.据我所知,该文件应该将来自NSData的字节存储到内存中的复制位置,并使用receiveDynamicPlacesArrayPointer指向该blob.
即使这样做我完全有可能犯了一个错误,即使我认为我理解它们,指针也会使我绊倒.任何帮助将不胜感激.