Iphone 奇怪的EXC\u访问错误
我的Objective-C代码中有一个for循环,它不断抛出一个EXC\u BAD\u访问错误。代码如下:Iphone 奇怪的EXC\u访问错误,iphone,objective-c,exc-bad-access,Iphone,Objective C,Exc Bad Access,我的Objective-C代码中有一个for循环,它不断抛出一个EXC\u BAD\u访问错误。代码如下: double (*X)[2]; for (int bufferCount=0; bufferCount < audioBufferList.mNumberBuffers; bufferCount++) { SInt16* samples = (SInt16 *)audioBufferList.mBuffers[bufferCount].mData; for (int
double (*X)[2];
for (int bufferCount=0; bufferCount < audioBufferList.mNumberBuffers; bufferCount++) {
SInt16* samples = (SInt16 *)audioBufferList.mBuffers[bufferCount].mData;
for (int i=0; i < 1024; i+=2){//numSamplesInBuffer / 2; i+=2) {
X[i][0] = samples[i];
X[i][1] = samples[i + 1];
NSLog(@"left: %f", X[i][0]);
NSLog(@"right: %f", X[i][1]);
NSLog(@"i: %d", i);
}
}
double(*X)[2];
对于(int bufferCount=0;bufferCount
当i=385
时,我在NSLog(@“left:%f:,X[i][0]);
行获得EXC\u BAD\u访问权限
考虑到X在本地声明可能是内存问题,我将X更改为一个属性,该属性在第一次通过时导致for循环的第一行出现EXC\u BAD\u ACCESS
有人知道为什么会发生这种情况吗?double X[512][2];
double X[512][2];
for (int bufferCount=0; bufferCount < audioBufferList.mNumberBuffers; bufferCount++) {
SInt16* samples = (SInt16 *)audioBufferList.mBuffers[bufferCount].mData;
for (int i=0; i < 512; i++) {
int sample_offset = i * 2;
X[i][0] = samples[sample_offset];
X[i][1] = samples[sample_offset + 1];
NSLog(@"left: %f", X[i][0]);
NSLog(@"right: %f", X[i][1]);
NSLog(@"i: %d", i);
}
}
对于(int bufferCount=0;bufferCount
正如HotLicks指出的,问题在于我没有为数组分配任何空间。解决方案是如下初始化数组:
double (*X)[2] = malloc(2 * 1024 * sizeof(double));
我猜X
不是你想象的那样。它是如何分配的?(事实上,再看看你的代码,我知道X不是你想象的那样。)不可否认,我在C方面并不出色,但我需要一个2维数组,所以我使用指针来创建它。编码器,你实际上在哪里分配数组???@jasoncoo我以前也尝试过,我在for循环的第一行获得了EXC_BAD_访问权限