我正在尝试恶意查找将像arrayToFill[channel][frame] = 0.f;
一样访问的浮点数**,但是只有执行以下代码段才能访问它,否则会出现错误的访问错误。
arrayToFill = (float **) malloc((frameCount * 2) * sizeof(float *));
for(int i = 0; i < channelCount; i++)
{
arrayToFill[i] = (float *) malloc(frameCount * sizeof(float));
}
这似乎完全不正确。
这似乎是这样的:
float **arrayToFill = (float**) malloc(channelCount * sizeof(float*));
for(int i = 0; i < channelCount; ++i)
{
arrayToFill[i] = (float*) malloc(frameCount * sizeof(float));
}
或者,如果通道数已知且已固定:
#define CHANNEL_COUNT 2
float *arrayToFill[CHANNEL_COUNT];
for(int i = 0; i < CHANNEL_COUNT; ++i)
{
arrayToFill[i] = (float*) malloc(frameCount * sizeof(float));
}
好吧,如果你只需要一个矩形数组,你可以写
float* arrayToFill = malloc( channelCount * frameCount * sizeof(float) );
只需一点数学即可访问不同的部分
arrayToFill[ x + y * channelCount ];
如果您绝对必须具有双下标,或者其中一个维度是可变的,则无法执行您已经拥有的操作。