EXC_BAD_ACCESS uint32_t
EXC_BAD_ACCESS uint32_t
我试图在Obj c中实现NSData的扩展方法。该扩展方法调用cpp lib方法。
下面是cpp方法的方法签名:
void process(char *result) { }
- (NSData *)PROCESS
{
uint32_t result;
process((char*)&result);
// At this point result shows 2949384954 as the value
NSData *d = [NSData dataWithBytes:&result length:sizeof(result)];
return d;
}
当我使用PROCESS
并分配返回的(NSData*)时,我得到一个EXC_BAD_ACCESS错误。我确信这与指针或引用的使用不当有关,但我就是想不出来。
下面的代码运行正常:
uint32_t result = 2949384954;
NSData *d = [NSData dataWithBytes:&result length:sizeof(result)];
NSLog(@"d: %@", d);
NSLog输出:
d: <fa0accaf>
调用方法的方式可能有问题。
返回"扩展方法"。你这话是什么意思?只需将其作为函数添加到类中作为方法。
相关文章:
- 使用来自 Excel VBA 的 C++ dll 时"Bad DLL calling convention" - 如何解决?
- memcpy 是将浮子打包到 uint32 中的标准方法吗?
- 警告C4018,包含int和UINT32,但不包含int和UCHAR
- C++17 编解码器在将标准::字符串转换为标准::字符串时抛出"bad conversion"
- 对于代理容器上的迭代器来说,"least bad implementation"可能是什么?
- 为什么 UInt64 变量不能包含大于 UInt32::Max 的值?
- C++:从 "const variable*" 转换为"uint32"会失去精度
- 获取错误:在抛出"std::bad::alloc"的实例后终止调用 what(): std::bad_alloc
- 从指针到 uint32 的类型转换
- 为什么当我使用双精度时,Qt<->Matlab 正确写入和读取我的字节,但存储 uint32 的字节不正确?
- uint32, int16, uint8 .为什么这些常用的数据类型没有进入标准
- 为什么 GetSystemMetrics (SM_CXVIRTUALSCREEN) 返回'bad'值?
- 将字符 * 转换为 uint16 和 uint32
- 将 lambda 传递给 STL 集时出错"bad function call"
- 新的 C++14 位分隔符处"Bad Character" Eclipse Oxygen 错误
- 使用 #define 被认为是"bad practice"吗?
- "400 Bad request"使用 OpenSSL BIO 进行请求时
- 如何将UINT8*施放到UINT32
- 解密文件AES_256_CBC返回"bad decrypt"错误
- 在C++流中,eof(),fail(),bad()和good()有什么区别