Can you give an example of stack overflow in C++? Other than the recursive case:
void foo() { foo(); }
If you want to generate an explicitly non-recursive program to result in a stack overflow by function calls:
#!/usr/bin/env python
import sys
print "void func" + sys.argv[1] + "() { }"
for i in xrange(int(sys.argv[1])-1, -1, -1):
print "void func" + str(i) + "() { func" + str(i+1) + "(); }"
print "int main() { func0(); return 0; }"
Sample output:
$ python recursion.py 5
void func5() { }
void func4() { func5(); }
void func3() { func4(); }
void func2() { func3(); }
void func1() { func2(); }
void func0() { func1(); }
int main() { func0(); return 0; }
Sample usage:
$ python recursion.py 250000 | g++ -x c++ - && ./a.out
At least on my system, the call stack seems to be 174602, so you'll need to set the argument to recursion.py
to be larger than that; and it takes a few minutes to compile and link the program.