关于设置栈空间大小,该怎么解决

关于设置栈空间大小
大家好,我在vs2008写了以下测试程序:

C/C++ code

void main()
{
    char buf1[1000000];
    char buf2[1000000];
}




发现编译器提示“ 应用程序发生异常 unknown software exception (0xc00000fd),位置为 0x0042d8e7。”出错。
我已经把“项目属性->链接器->系统->堆栈提交大小”设置为3000000,不知道为什么还会提示栈空间不足呢?请问是什么原因导致设置失效?或者由其它什么原因引起的呢?谢谢大家!

------解决方案--------------------
这是多大啊,字节?

操作系统自身是有限制的,不是你要多少就多少的...

linux下用Ulimit,win下木知。
------解决方案--------------------
怎么也是有个上限的,照lz想的那样内存条的钱都省了
------解决方案--------------------
别用超过1MB的数组

改栈用/stack:xxx
应该和你这个方式是等效的,但一般改栈大小都用2的整次方
------解决方案--------------------
栈空间应该是1024KB,超过就会提示异常。。。
------解决方案--------------------
栈有限制,1M
------解决方案--------------------
避免用过大的栈,很容易出问题,性能上也不推荐,建议用堆。
------解决方案--------------------
你没有rebuild工程而已
------解决方案--------------------
探讨

各位,我已经rebuild工程了,请问会是什么原因造成呢?

------解决方案--------------------
C/C++ code
void main()
{
    static char buf1[1000000];
    static char buf2[1000000];
}

------解决方案--------------------
探讨

C/C++ code
void main()
{
static char buf1[1000000];
static char buf2[1000000];
}


在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。

------解决方案--------------------
探讨

谢谢11楼的朋友,我按照你的方法设置4MB,程序正常运行。然后我尝试把Stack Reserve Size改回默认值0,重新编译,程序居然还可以正常运行。我的重新设置似乎没有生效,而且我已经rebuild了,请问各位是什么原因导致这个问题呢?谢谢!

------解决方案--------------------
探讨

请问各位几个问题:
1.“堆栈提交大小”和“堆栈保留大小”之间有什么不同呢?
2.为什么前者设置可以生效,后者却不可以呢?
3.后者有什么用呢?
谢谢!