memcpy()导致iOS中的EXC_BAD_ACCESS

Sye*_*man 3 objective-c memcpy nsdata ios

我正在接受NSData我的套接字接收功能,我正在尝试将该数据复制到tempbuffer我的音频类中,我正在使用外部类型全局变量来执行此操作.

这是我的代码:

memcpy([recorder tempBuffer].mdata,(__bridger const void *)data,data.length);
Run Code Online (Sandbox Code Playgroud)

这里记录器是我extern的音频类的全局变量.

当控制到达这行代码时抛出异常,可能是错误.

Ste*_*her 5

这里有三种可能性:

  1. [recorder tempBuffer].mdata不是有效的指针.(例如,它是什么类型?如果它是NSMutableData,您应该访问其mutableBytes属性.)
  2. [recorder tempBuffer].mdata不是足够大小的有效指针(data.length).
  3. (__bridger const void *)data 不是足够大小的有效指针.

在这三个中,我可以保证#3需要解决.一个NSData的本身并不是你想要的数据,但一个对象包装所需的数据.你应该使用而不是在这里使用桥梁data.bytes.

另外两个,我帮不了你.我不知道mdata它是什么类型或分配的位置.