我正在尝试malloc一个浮动**,它将像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));
}
这似乎完全不正确。
答案 0 :(得分:4)
这似乎应该是:
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));
}
答案 1 :(得分:0)
如果你只需要一个矩形数组,你可以写
float* arrayToFill = malloc( channelCount * frameCount * sizeof(float) );
并使用一点点数学访问不同的部分
arrayToFill[ x + y * channelCount ];
如果你绝对必须有双下标,或者其中一个维度是可变的,那就没有办法做你已经拥有的了。