Есть некая функция которая использует временный массив. Если массив маленький, хочется создавать его на стеке (что бы не дергать менеджер памяти), если большой приходится делать его в куче (иначе сегфолт). Я че то не пойму, как построить правильный критерий выбора того или иного варианта?
Какой то вот такой кривой пример кода:
int Nmax = 1024; // максимально возможный размер буфера на стеке
void func(){
int N = ...;
T p_buf[(N<=Nmax)*N];
T* p = p_buf; if(N>Nmax) p = new T[N];
...
if(N>Nmax) delete [] p;
}