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

听说vs默认的堆栈保留大小是1M,那如果超过1M会有什么后果?解决方法

2012-04-11 
听说vs默认的堆栈保留大小是1M,那如果超过1M会有什么后果?假如有:int test[1000000000]会有什么后果???[

听说vs默认的堆栈保留大小是1M,那如果超过1M会有什么后果?
假如有:
int test[1000000000];

会有什么后果???

[解决办法]
栈溢出会导致各种莫名其妙的结果,影响部分代码的正常运行。

我也试过,当时不懂,定义了一个超大的临时数组,结果每次运行到那里都出问题。
我改成malloc申请内存之后,就一切正常了。

栈的优点是速度快,但是空间有限。
[解决办法]
溢出错误,比如一个无限递归,就会溢出崩溃
[解决办法]

探讨

引用:
栈溢出会导致各种莫名其妙的结果,影响部分代码的正常运行。

我也试过,当时不懂,定义了一个超大的临时数组,结果每次运行到那里都出问题。
我改成malloc申请内存之后,就一切正常了。

栈的优点是速度快,但是空间有限。


主要问题是,超过了大小,编译器不会报任何警告和错误.

刚刚测试了一下,默认情况下,只能定义这么大的数组:
……

[解决办法]
有一个专门的异常码,就是栈溢出,stackoverflow吧。超出以后就会抛这个异常。

热点排行