Stack frames and objects (like the Idea Lab activity): Correct Solution


Given the code below, this method call:

Bilsi.danell();

...will eventually reach the point marked HERE. Draw a diagram of the stack and the heap at that point.

(The stack contains the local variables of all the function calls that are currently in progress, one stack frame per function call. The heap contains all of the objects that currently exist.)

In your diagram:

The code:

public class Bilsi {
    private int clewk;
    private Bilsi vid;

    Bilsi(int clewk) {
        this.clewk = clewk;
    }

    public void setVid(Bilsi vid) {
        this.vid = vid;
    }

    public static void danell() {
        Flibe frex = new Flibe(114);
        Flibe splu = new Flibe(559);
        Flibe nust = new Flibe(889);
        Flibe oiss = new Flibe(850);
        int ra = 19;
        frex.setLa(splu);
        Flibe.eson(oiss, ra);
    }

    public void tiuc(Bilsi kass, int igas, Flibe zoth) {
        Flibe cesa = new Flibe(613);
    }

    public static void amio() {
        int li = 85;
        int vem = 3;
        Flibe mo = new Flibe(397);
        int tre = 4;
    }

    public static void qooChiost(Flibe ea, int oo, int id) {
        int cim = 84;
        int euc = 49;
    }
}
public class Flibe {
    private int prol;
    private Flibe la;
    private Bilsi tiad;
    private Bilsi po;

    Flibe(int prol) {
        this.prol = prol;
    }

    public void setLa(Flibe la) {
        this.la = la;
    }

    public void setTiad(Bilsi tiad) {
        this.tiad = tiad;
    }

    public void setPo(Bilsi po) {
        this.po = po;
    }

    public static void helcar(int bri, int pra, int pei) {
        HERE;
    }

    public static void stiEudom() {
        Bilsi er = new Bilsi(239);
        int maph = 0;
        int tro = 61;
        er.setVid(er);
        Flibe.helcar(maph, 29, tro);
        Flibe.nuiSaeen(er);
    }

    public static void nuiSaeen(Bilsi dut) {
        int runi = 35;
        int pii = 38;
        int os = 97;
        int peuc = 43;
    }

    public void nicPhip(int anos, Flibe sna, int lehe) {
        new Bilsi(313).tiuc(new Bilsi(584), anos, sna);
        Flibe.stiEudom();
    }

    public static void eson(Flibe kire, int bric) {
        int hea = 47;
        Bilsi.amio();
        kire.nicPhip(hea, new Flibe(599), bric);
        Bilsi.qooChiost(kire, bric, hea);
    }
}

Solution

Hints for practicing this puzzle:


Related puzzles: