我正在做一些音频处理,因此混合了一些 C 和 Objective C。我设置了一个类来处理我的 OpenAL 接口和我的音频处理。我已将类后缀更改为
。毫米
...如 Core Audio 书中的许多在线示例中所述。
我有一个在 .h 文件中声明并在 .mm 文件中实现的 C 风格函数:
static void granularizeWithData(float *inBuffer, unsigned long int total) {
// create grains of audio data from a buffer read in using ExtAudioFileRead() method.
// total value is: 235377
float tmpArr[total];
// now I try to zero pad a new buffer:
for (int j = 1; j <= 100; j++) {
tmpArr[j] = 0;
// CRASH on first iteration EXC_BAD_ACCESS (code=1, address= ...blahblah)
}
}
奇怪的???是的,我完全不知道为什么这不起作用,但以下是有效的:
float tmpArr[235377];
for (int j = 1; j <= 100; j++) {
tmpArr[j] = 0;
// This works and index 0 - 99 are filled with zeros
}
有没有人知道为什么我不能声明一个大小为“total”且具有 int 值的数组?我的项目使用 ARC,但我不明白为什么这会导致问题。当我调试时打印'total'的值时,它实际上是正确的值。如果有人有任何想法,请帮忙,这让我发疯!