0

您好:尝试解决上述错误,该错误需要在静态数组的下标声明中使用硬编码整数arInterpolateFin

我已经在里面尝试了局部变量,ProcessSamples但我仍然收到错误。将接收返回数组的调用代码对象是本地malloc数组。

有什么建议么?我想保留这个结构,因为它可以非常快速地处理许多元素。

(SInt16*) ProcessSamples:(SInt16)arBufferRaw : (int) numSamples;
{
    int tmpInt = numSamples
    static SInt16 arInterpolateFin[tmpInt];//4201930

    for (int i = 0; i<(95); i++ )
    {
        arInterpolateFin[tmp1st]=10000;
        tmp1st+=44099;
    }
    return arInterpolateFin;
}
4

2 回答 2

3

见面malloc()。关键字在这里static没有任何意义。

SInt16 *arr = malloc(numSamples * sizeof(arr[0]));

free()当您不再需要它时,不要忘记调用者内部返回的指针。

另外,我看不出该tmpInt变量有什么用途。它只是使代码更难遵循。

于 2013-09-08T17:22:19.507 回答
1

您编写“将成为返回数组接收者的调用代码对象是本地 malloc 数组。” 这没有任何意义——你返回一个指向静态数组的指针,而不是数组本身。

此外,分配一个永久 ( static) 数组来更改每个函数调用的大小是没有意义的 - C 数组在创建时被赋予一个大小,并且此后无法更改该大小。

您是否尝试通过调用方法在数组中设置一些初始值?如果是这样,将数组传递给方法:

(void) initProcessSamples:(SInt16 *)arInterpolateFin
{
    int tmp1st = 0; // 0 is just a guess

    for (int i = 0; i < 95; i++)
    {
        arInterpolateFin[tmp1st] = 10000;
        tmp1st += 44099;
    }
    return;
}

高温高压

于 2013-09-08T20:34:22.127 回答