我有一个类库,主要将字符串记录到文本文件.它的一个方法是LogString(字符串str)所以我只是想知道基于下面的函数,如果我多次调用它超过600次,是否会导致stackoverflow?
public void LogString(string str) { try { if (filePathFilenameExists()) { using (StreamWriter strmWriter = new StreamWriter(filePathFilename, true)) { strmWriter.WriteLine(str); strmWriter.Flush(); strmWriter.Close(); } } else { MessageBox.Show("Unable to write to file"); } } catch (Exception err) { string errMsg = err.Message; } }
Kyle Cronin.. 9
这似乎不是一个递归函数.我不知道这会如何导致堆栈溢出.
为了溢出堆栈,您必须不断地从函数内调用函数.每次执行此操作时,更多堆栈空间用于在被调用函数返回时恢复调用函数.递归函数遇到了这个问题,因为它们需要存储同一函数状态的多个副本,每个递归级别一个.这也可能发生在相互递归的函数中(A调用B,B调用A)并且它可能更难检测,但我认为这不是这种情况.
这似乎不是一个递归函数.我不知道这会如何导致堆栈溢出.
为了溢出堆栈,您必须不断地从函数内调用函数.每次执行此操作时,更多堆栈空间用于在被调用函数返回时恢复调用函数.递归函数遇到了这个问题,因为它们需要存储同一函数状态的多个副本,每个递归级别一个.这也可能发生在相互递归的函数中(A调用B,B调用A)并且它可能更难检测,但我认为这不是这种情况.