int realLen = *((int*)((char*)sData.pData + 2));
NSLog(@"realLen = %d", realLen);
NSData* data = [NSData dataWithBytesNoCopy:sData.pData length:realLen freeWhenDone:NO];
sData
是struct
类型,pData
类型属于void*
类型;
如何获得正确的长度?
答案 0 :(得分:0)
所以你想将存储在sData.pData中的地址存储在NSData
对象中吗?这很奇怪,可能没有适当的内存管理。
如果 你想做什么,你可以使用:
int realLen = sizeof(sData.pData)
但是,如果你想要做的是将sData.pData指向的数据复制到你的NSDats中,那你就不走运了。 C风格void*
不会让您知道它所指向的事物的大小。您必须知道数据的大小。