//更大的栈
#pragma comment(linker, "/STACK:102400000,102400000")
2021.5.3补充:
上述代码是在VS下的实现。
为什么会爆栈?
程序的默认栈大小在2MB左右,在申请大数组的时候,比如
int main()
{
int a[10240000000] = { 0 };
return 0;
}
就会因为栈的大小不够申请这么大的数组空间而爆栈。
为什么栈这么小,才2MB?
因为小容量更适合栈这种数据结构,效率更高。
如果非要增加栈容量,就是上面的代码了。不同的编译器实现扩栈的方式不同。
但是,如果将大数组声明为全局变量或static变量,那么数组占用的就不是栈的空间,而是 全局初始化数据区/静态数据区(Data Segment) 的空间,空间够大,就不溢出。
更详细的学习,建议看这个,写的不错。
https://blog.csdn.net/qq_21882325/article/details/65445810
PS:还有六十多天就中考喽……我初三下学期以来其实根本没碰编程一类的东西了,只是偶尔看看群,了解一些零散的知识,看看近期的科技资讯,以至于我不会太落后与时代罢了。