In languages such as C, the stack in preallcoated and cannot grow, so if you exceed it you have a stack overflow.
I agree with most of what Koriolis says here, but the
stack issue is not a language issue per se. Rather it is
a compiler/OS property. Some operating systems (e.g. some
flavours of Unix) allow the stack to be grown on demand,
so never run out of stack as such .. programs just use more and more virtual memory.
However, so far as I am aware on Windows you have to say
how much stack you want up-front and then wanton recursion
leads to a stack overflow as Koriolis says.
If recursion is causing headaches, one approach might be
to use Blitz types to model a data stack. This way your
stack is part of the heap and only limited by VM. I used
this technique to manage include files in a preprocessor.
Steve Hill.