最近编程时编写了一个递归程序,由于递归太深,造成栈溢出,于是想到要增加栈空间大小。
以下是转来的改变VC栈大小的方法:
内存的读取速度显然较硬盘要快的多,当做程序时遇到大规模数据的频繁存取的时候,开辟内存空间就更显得重要了!
一般来说,我们所用的内存有栈和堆之分,其它的我们很少控制,栈的速度快,但是空间小,不灵活;而堆的空间几乎可以满足任何要求,灵活,但是相对的速度要慢了很多,并且在vc中堆是人为控制的,new了就要delete,否则很容易产生内存泄露等问题。
VC++默认的栈空间是1M,将程序栈空间定义得大一点,有两个方法更改
方法一:link时用/STACK指定它的大小,STACKSIZE 定义.def文件
语法:STACKSIZE reserve[,commit]
reserve:栈的大小;commit:可选项,与操作系统有关,在NT上只一次分配物理内存的大小
方法二:设定/STACK
打开工程,依次操作菜单如下:Project->Setting->Link,在Category 中选中Output,然后在Reserve中设定堆栈的最大值和commit。
注意:reserve默认值为1MB,最小值为4Byte,如修改为4MB,则将reserve改为0x400000;
commit是保留在虚拟内存的页文件里面,它设置的较大会使栈开辟较大的值,可能增加内存的开销和启动时间