Iphone EXC_从AudioBuffer进行错误访问
我正在尝试使用AudioUnitforiPhone应用程序录制 更改:(开始)我添加了以下代码Iphone EXC_从AudioBuffer进行错误访问,iphone,exc-bad-access,Iphone,Exc Bad Access,我正在尝试使用AudioUnitforiPhone应用程序录制 更改:(开始)我添加了以下代码 bufferList = (AudioBufferList *)malloc(sizeof(AudioBuffer)); bufferList->mNumberBuffers = 1; bufferList->mBuffers[0].mNumberChannels = 2; bufferList->mBuffers[0].mDataByteSize = 1024;
bufferList = (AudioBufferList *)malloc(sizeof(AudioBuffer));
bufferList->mNumberBuffers = 1;
bufferList->mBuffers[0].mNumberChannels = 2;
bufferList->mBuffers[0].mDataByteSize = 1024;
bufferList->mBuffers[0].mData = calloc(256, sizeof(uint32_t));
更改:(结束)修正:(我得到OSStatus-50错误代码)-因为我没有初始化缓冲区列表 我正在从AudioBuffer(ioData->mBuffers[0].mData)执行错误访问
我不确定这个错误。请帮助我解决此问题。您正在向解除分配的对象发送消息。在XCode中,转到项目->编辑活动可执行文件->参数->单击“加号”按钮,添加NSZombieEnabled并将其值设置为YES。这样,您可以调试应用程序并找出哪个解除分配的对象仍在接收消息 但别忘了在项目结束后禁用此参数。我解决了它 在我的代码中,我编写了两个回调方法。我们需要两个音频设备来使用两个音频单元 我刚刚删除了一个回调函数 只需查看以下链接即可了解相关信息。
您的缓冲区列表初始化为什么?列表中的元素通常是记录样本的存放位置。我没有初始化bufferList中的任何内容。但我正在从ioData读取数据,我发现了问题。实际上AudioBufferList(我的意思是ioData)没有数据。这就是为什么,它给出了这个错误。但是我不知道怎么解决这个问题。你有什么办法解决这个问题吗。问题是,;AudioBufferList(ioData)没有数据。所以只有它给出了错误。
static OSStatus recordingCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {
OSStatus status;
status = AudioUnitRender(appdelegate->audioUnit,
ioActionFlags,
inTimeStamp,
inBusNumber,
inNumberFrames,
appdelegate->bufferList);
if(status != 0)
NSLog(@"AudioUnitRender status is %d", status);
SInt16* samples = (SInt16*)(ioData->mBuffers[0].mData);
.....
}