码迷,mamicode.com
首页 > 其他好文 > 详细

写一个栈溢出的程序

时间:2017-08-20 15:53:32      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:栈溢出   lower   函数   就会   color   []   code   程序   需要   

一般栈溢出在无限递归下出现,下面的程序在创建对象时出现栈溢出:

public class Main {
    public static void main(String[] args) {
        A a = new A();
    }
}

class A {
    private A a = new A();
}

不应该是outofmemory吗?栈里只有a这个reference,其引用的对象,以及对象里的a引用的对象都在堆里分配内存?

猜想(毫不负责):

应该是执行new A()时,调用构造函数,而构造函数初始化a需要调用构造函数,函数调用函数就会将函数地址压栈,因为是无限创建对象,无限的调用构造函数,那就无限的压栈,导致Exception in thread "main" java.lang.StackOverflowError。

写一个栈溢出的程序

标签:栈溢出   lower   函数   就会   color   []   code   程序   需要   

原文地址:http://www.cnblogs.com/drizzlewithwind/p/6889791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!