Et meget dumt spørgsmål!
Hvad betyder "call stack", er det et blok af kode som bliver ekskveret, eller er det noget med hukommelsen at gøre??
Det har noget med hukommelsen at gøre.
Stakken er et område i hukommelsen hvor værdier lægges på i toppen og tages fra toppen igen. Dvs. den sidste værdi lagt på stakken er den første som fjernes (tænk på en stak tallerkener).
Denne stak bruges til at indeholde de variabler, som du erklærer i funktioner, til at indeholde parametre til funktioner, til retur adresser og lidt andre småting.
Når du kalder en funktion, forventer du, at programmet fortsætter med linjen efter funktionskaldet, når funktionen er færdig. Det sker ved at når kaldet til funktionen udføres, så lægges adressen på instruktionen
efter funktions kaldet lagt på stakken og der springes til funktionens adresse, hvorfra programmet fortsætter. Når funktionen er færdig, springes der så til adressen på stakken og denne værdi fjernes fra stakken. Nu er programmet så tilbage til instruktionen efter funktionen.
En callstack er bare et andet udtryk for stakken, men gerne i forbindelse med de oplysninger der foreligger om hvilke funktioner, programmet lige nu er i gang med at udføre. Du aflæser ofte din callstack gennem en debugger, hvis du f.eks. vil vide, hvorfra en funktion kaldes, så kigger du på din callstack, og ser hvilken funktion, der skal springes tilbage til, når din funktion er færdig.
Indlæg senest redigeret d. 19.08.2008 16:16 af Bruger #2695