首页 > 代码库 > 关于栈溢出和手工开栈

关于栈溢出和手工开栈

    让我们从问题开始:

1.    为什么会出现栈溢出?

         1.  在递归调用的时候,递归的深度过大就会导致系统栈溢出

         2.  在函数中直接定义数组时数组空间开的过大,( 在函数中直接定义的数组是在栈区中申请空间,栈空间是有限的
              如果是在函数外面定义,那么是在堆中申请,所以大数组需要在函数外面定义 )

2.    怎样进行手工开栈?

           微软的编译器(C++)

           

#pragma comment(linker, "/STACK:102400000,102400000")

          G++

    int size = 256 << 20; // 256MB
    char *p = (char*)malloc(size) + size;
    __asm__("movl %0, %%esp\n" :: "r"(p));


关于栈溢出和手工开栈