В C есть функция alloca, выделяющая память на стеке. Эта память автоматически освобождается при выходе из функции. При выделении чрезмерного количества памяти, происходит переполнение стека. Есть ли способ узнать, сколько памяти можно выделить в стеке? Хочется сделать что-то вроде такого:
if(в_стеке_хватит_места_чтобы_сделать_alloca(столько-то_байт) )
tmp = alloca(столько-то_байт);
else
{
tmp = malloc(столько-то_байт);
if (tmp == NULL)
error();
needfreetmp = 1;
}
...
какой-то_код;
...
if (needfreetmp)
free(tmp)