gpt4 book ai didi

c# - 递归的任何其他原因是否会导致堆栈溢出?

转载 作者:太空狗 更新时间:2023-10-30 00:08:23 26 4
gpt4 key购买 nike

我收到一段似乎无法产生 stackoverflow 的代码的堆栈溢出异常......它看起来像这样:

public String WriteToFile(XmlDocument pDoc, String pPath)
{
string source = "";
string seq = "";
string sourcenet = "";

XmlNodelist sourceNode = pDoc.GetElementsByTagName(XmlUtils.Nodes.Source);
source = sourceNode.Item(0).InnerText;

XmlNodelist sqList= pDoc.GetElementsByTagName(XmlUtils.Nodes.Seq);
seq = sqList.Item(0).InnerText;

XmlNodelist sourceNets = pDoc.GetElementsByTagName(XmlUtils.Nodes.SourceNets);
sourcenet = sourceNets.Item(0).InnerText;

string fileName = Folders.GetMyFileName(source, seq, sourcenet);
string fullPath = Path.Combine(pPath, fileName);

pDoc.Save(pFullPathFile); <--- Stackoverflow is raised here

return pFullPathFile;
}

没有递归调用,如果你在进入“外部代码”之前检查调用堆栈,它的深度为 2(我猜这不是外部代码,而是启动线程的框架的一部分,它有调试关闭)。

¿ 无论如何,除了递归调用之外,是否可以引发异常?它确实总是在 pDoc.Save 方法调用中失败……而且 pDoc 实际上并没有那么大……更像是 32KB 的数据……

最佳答案

只要堆栈超过其最大大小,堆栈溢出异常就会发生。这通常由...完成。

  • 拥有一个非递归的深层嵌套堆栈。想想事件 Storm ,其中事件 A 导致事件 B,事件 B 导致事件 C,所有这些事件都有深度增长堆栈的处理程序。
  • 在一些大堆栈分配之后出现浅堆栈

关于c# - 递归的任何其他原因是否会导致堆栈溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8975291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com