Как сказал Оли в своем ответе, лучше всего иметь автономную функцию для этого временного массива.Одно выделение не будет стоить дорого, если эта функция не вызывается в очень быстром цикле ... так что сначала сделайте все правильно, затем профилируйте, а затем решите, стоит ли проводить оптимизацию.
Это сказано вчерез несколько случаев после профилирования и когда необходимая временная структура данных была немного сложнее, чем один массив int, я принял следующий подход:
void foo(int n, ... other parameters ...)
{
static int *temp_array, temp_array_size;
if (n > temp_array_size)
{
/* The temp array we have is not big enough, increase it */
temp_array = realloc(temp_array, n*sizeof(int));
if (!temp_array) abort("Out of memory");
temp_array_size = n;
}
... use temp_array ...
}
обратите внимание, что использование статического массива исключает, например, многопоточность или рекурсиюи это должно быть четко указано в документации.