将内存从2GB升级到4GB可以防止Stack Overflow异常吗?

8 memory stack-overflow

我的电脑有2GB的RAM内存.当我在C#2008 Express Edition中形成具有70.000个项目的数组的3D网格对象时,我收到错误消息"Stack Overflow exception handling ...".如果我将RAM内存从2GB升级到4 GB,我可以克服此错误消息吗?

Mar*_*ell 19

几乎肯定不是.堆栈溢出(而不是内存不足)意味着您已经消耗了已分配的堆栈空间 - 但堆栈(相对而言)很小.该是在那里发生的一切......

选项:

  • 修复你的无限递归错误......
  • 将数据移动到数组/列表/某些基于堆的存储(此刻它在哪里?)
  • 避免深度递归
  • 避免过大的结构......你有一些应该真正上课的大型结构吗?(结构复制自己,如果你眨眼他们)
  • 增加堆栈空间如果你确信你只是把它翻过来,并且它不值得一个大的重构(我讨厌这个答案) - 要做到这一点,你需要用更大的堆栈生成你自己的线程

  • @kotlinksi:我认为@Drew的观点是堆空间可以来自页面文件以及实际的RAM. (2认同)

Mic*_*odd 11

不会.增加RAM不会增加堆栈大小.

您正在编写导致堆栈溢出的代码(可能是由于递归),您需要修复它.

  • 确实; 无限递归是最有可能的.+1 (3认同)