解决:Unhandled exception in XX.exe: 0xc00000FD; Stack Overflow

今天遇见这个问题,就简单记一下。参考了不少文档、博客,终于解决了问题。其实说起来问题也比较简单,就是在运行时在出错的地方卡住,并没有提示任何错误。在Debug时错误信息为:Unhandled exception in XX.exe: 0xc00000FD; Stack Overflow,栈溢出!!
造成的原因有一下几个:
1.静态数组过大,其他论坛上有人图片分辨率过高导致了,栈上申请空间太大,溢出。这种情况下,使用动态分配内存或者减少数组的内存就解决了。我认为动态分配才是王道,new一块内存,在函数结束时要delete去释放内存,指针的话用free。
2.两外两种的原因都出现在循环结构或者递归调用中。一种是死循环,就是你的判断条件设置的有缺陷,或者判断的位置不对导致的。我这次的是属于这种。算是比较低级了,无限循环调用递归。。。
3.另一种是真的在循环中确实产生的变量太多,一般的小工程的代码,不大容易出现这种错误。就是排除了代码上的问题,既然不能通过优化代码达到,那就将编译器的栈默认内存设置大一点。VS2017是在project——>properties——>Linker——>system,stack reserve size 设置为ox100000。
其实,如果你按照第三中设置后没效果的话,那就要优化代码了,大部分犯的错误就是无线循环了,当然如果你在跑deep learning的框架模型,就很可能第一种或者第三种了。

猜你喜欢

转载自blog.csdn.net/handoking/article/details/80314325