首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教不同操作系统对于栈耗尽是如何避免的呢

2012-03-23 
请问不同操作系统对于栈耗尽是如何处理的呢?例如递归调用func(),在不同操作系统下,该线程栈耗尽后是如何处

请问不同操作系统对于栈耗尽是如何处理的呢?
例如递归调用func(),在不同操作系统下,该线程栈耗尽后是如何处理的呢?

void   func()
{
        int   a[10000];
        a[10000   -   1]   =   5;

        func();
}


[解决办法]
程序当掉
[解决办法]
一般都是程序崩溃,操作系统强制结束程序。

[解决办法]
崩溃
[解决办法]
弹出错误

现代操作系统一般会预知这些情况,会防止崩溃的发生
[解决办法]
弹出错误
[解决办法]
没有疑问的是会报内存错误,并退出程序

[解决办法]
关注。
[解决办法]
试了下, 果然运行时崩溃了.
[解决办法]
弹出错误
[解决办法]
stack overflow 异常
[解决办法]
code dump
[解决办法]

[解决办法]
#include <iostream>

using namespace std;

void func() {

int a[10000];
a[10000-1] = 5;
cout < < "hello " < < endl;

func();
}

int main() {

func();

return 0;
}

以上是我写的源代码,在Windows的命令行下运行,只是输出了若干行的hello,没有报错,是不是系统自动kill进程了?怎么会什么反应都没有呢?
[解决办法]
在windows下会抛出一个stackoverflow异常,把代码改改,前面加上
#include <windows.h>

int main() {
__try
{func();}
__except(1)
{cout < < "overflow " < <endl;}
return 0;
}
具体可以看看SEH。

热点排行
Bad Request.