(1)出现如下类似提示:test.exe 中的 0x00417be5 处未处理的异常: 0xC00000FD: Stack overflow,其中,0x______的值依具体情况而不同。
原因:很简单,主要原因有两种,一种是程序访问了非法地址,另一种是程序的Stack不够用了。这里只讨论后一种情况。
解决办法:找到程序中 new 大数组或者定义大数组的地方,基本上问题出在那里。解决时,到工程属性System选项,把Stack设置大一些就可以了。
(2)vc6.0中可以通过以下进行设置:project-> setting-> link-> project options-> Output-> Reserve,将对应的值进行修改。而在2005中,本人也找到了,不过不知道怎么设置,就没怎么继续研究,项目->XXX属性->配置属性->链接器->系统,便可以看到有关参数,具体不详!
(3)通常类似情况是在数组定义过大的情况下发生的,可以通过把数组设成全局变量或者malloc出来就可以解决,我就是用的这种方法。
(4)还看到有人建议用这个方法,#pragma comment(linker,stack:10000000,10000000),这个更看不懂了,并且提建议的人也不建议这么做,呵呵,有关这个详见:http://www.cppblog.com/xczhang/archive/2008/01/10/40866.html
当.h文件里有函数实现时VS2005编译器报此错误,解决方法:
1.在.h里的函数声明前加 inline
2.在项目->属性->链接器->命令行->附加选项中加 /force