Can you give an example of stack overflow in C++?

后端 未结 12 1574
不知归路
不知归路 2020-12-31 18:52

Can you give an example of stack overflow in C++? Other than the recursive case:

void foo() { foo(); }
12条回答
  •  既然无缘
    2020-12-31 19:44

    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.

提交回复
热议问题