如果这是一个初学者的问题,我很抱歉——我的大部分编程都是使用非常高级的语言,而我在 C 方面的专业知识有限。(这是我可以用 Matlab、Octave 等语言很容易做到的事情, Sage、Maxima 等,但为此我需要 C) 的速度。
但无论如何......我有一个数组,其大小是在运行时使用 malloc 设置的:
int *A = malloc(m * sizeof(int));
其中 m 是根据用户提供的一些值计算得出的。我有一个更新数组的函数“update”(或者,如果您愿意,可以将数组作为输入并返回另一个作为输出)。此更新函数可能会被调用 10^8 次以上。
所以函数本身不能用malloc引入大小合适的输出数组,否则内存会被用完。因此,例如,我不能这样做:
int * update(int *L) /* produces next iteration of L */
{
int *out = malloc(m * sizeof(int));
/* do some stuff with L and produce new array out */
return (out);
}
我试图在更新函数之外找出一个静态变量:
static int *out;
并在 main 中定义其大小:
out = malloc(m * sizeof(int));
但这似乎也不起作用。
无论如何,我会非常感谢一些建议 - 我想我已经用尽了谷歌的卓越之处。