It's helpful to know what the stack actually gets used for.
A process's stack normally gets used for two different things. First, it's where all function parameters and return addresses are pushed. When you call foo(3, 4, str), the compiler will push the address at which foo() was called, and then the values of 3, 4, and a pointer to str. Then control jumps to function foo(), which will pop the 3 arguments off, execute its code, and then pop the return value as it finishes.
The more nested function calls you have, the deeper the stack. Recursive functions will fill the stack quickly, if they're allowed to iterate uncontrolled.
The other thing they're used for is "temporary" variables. That is, non-static things inside functions. If you declare "int x; char str;", you will create two stack entries (pointers) which will live until the function exits.
So, how many things will an 8MB stack hold? If your machine is 64-bit, just divide 8M by 8... so 1 million entries. Double that if you're on a 32-bit machine.
Is that enough? One would hope so.... but if we all know the quality of code in MUD's, so I can't swear to it.