C语言 奇怪的马洛克问题



我正在尝试恶意查找将像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 ];

如果您绝对必须具有双下标,或者其中一个维度是可变的,则无法执行您已经拥有的操作。

相关内容

  • 没有找到相关文章

最新更新