首页 > 其他 > 详细

关于栈溢出和手工开栈

时间:2015-01-15 16:02:17      阅读:313      评论:0      收藏:0      [点我收藏+]

    让我们从问题开始:

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));


关于栈溢出和手工开栈

原文:http://blog.csdn.net/u013514722/article/details/42741663

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!