【问题标题】:How to get the length of a struct in Obj-C?如何在 Obj-C 中获取结构的长度?
【发布时间】:2016-12-07 03:03:52
【问题描述】:
int realLen = *((int*)((char*)sData.pData + 2));
NSLog(@"realLen = %d", realLen);
NSData* data = [NSData dataWithBytesNoCopy:sData.pData length:realLen freeWhenDone:NO];

sDatastruct 类型,pData 在其属性中是 void* 类型;

怎样才能得到正确的长度?

【问题讨论】:

  • 不,这是我的问题。
  • 这是objective-C,所以请不要使用C。
  • 对不起。但这是关于第一行 C 的问题。好的,它是 Obj-C。
  • 长度是消息的一部分。
  • 我认为似乎违反了对齐限制规则。

标签: ios objective-c


【解决方案1】:

那么您想将存储在 sData.pData 中的 地址 存储在 NSData 对象中吗?这很奇怪,而且可能不是正确的内存管理。

如果那你想要做的,你可以使用这个:

int realLen = sizeof(sData.pData)

但是,如果您想要将 sData.pData 指向的数据复制到您的 NSDat 中,那么您就不走运了。 C 风格void* 不会让你知道它所指向的东西的大小。你必须知道数据的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多