码迷,mamicode.com
首页 > 其他好文 > 详细

关于栈溢出和手工开栈

时间:2015-01-15 16:04:07      阅读:137      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!