Hos*_*rus -3 javascript c# c++ java
我正在看一个C#教程,遇到了StackOverflowException.
叙述者使用下面的代码片段给出了这样一个例外的简洁例子,
public class Employee
{
private string _name;
public string Name
{
get{ return Name; }
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找C++和Java中这种类型的简单代码的一些示例,更具体地说是在javascript中可能导致Stack Overflow.
Nik*_*wal 13
这个解释是Java,C,C++语言的StackOverflowException背后的基本原因.
由于递归方法调用,Stackoverflow异常是由任何语言引起的.
假设您有一个调用自身的方法或无限递归循环的任何其他方法,那么它将导致Stacoverflowexception.这背后的原因是方法调用堆栈被填充,它将无法容纳任何其他方法调用.
方法调用堆栈看起来像这张图片.

解释 - 假设Main方法有五个语句,第三个方法调用methodA,然后main语句的执行在statement3处暂停,MethosA将被加载到调用堆栈中.然后方法A调用methodB.所以methodB也被加载到堆栈中.
因此,以这种方式无限递归调用使调用堆栈得到填充.所以它不能再提供任何方法了.所以它抛出StackOverflowException.
在Java中:
public class Test {
public static void main(String[] args) {
main(args);
}
}
Run Code Online (Sandbox Code Playgroud)
通常,任何不终止或迭代次数过多的递归函数都会导致此问题.
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |